better build (compile common sources only once)
refactor/kiss + getopt_long