redo models for locations to work with IP