Introduced Module class; new DataAbstract; lots more refactoring.