Feature/modulize

merge it, write docs and cpanize!