Overhaul to separate modules