major code refactor, moving towards oop design