re-layout project modules
add test module and tests