split the modules into better structure as well