organizing
add tests and organize.