location implementation