refactored entire project to be MARK II