Full Implementation