Restructuring oop module
Major overhaul