rewrite library to make new instance of object; split lib into submodules; rewrite tests to always run edit stuff