broke down locationGetter into seperate classes. Things left to do are marked with a TODO flag