redid the location generator. simpler and less coupled, but slower