separate library
moved main to its own module
moved main to its own module