split into common and application
refactor boot
add library checks in setup