more object-oriented codebase
working