refactored objects into separate files