organize code into modules
update docs