Initial draft of OOP refactor with all feature basic functionality correctly in place