splitting modules and adding some testing