Start separating into modules and redesigning a bit.