separate modules
add test
add unit test