adds major modules and initial impl