add single_main
add post_build_always support
better update detection
can optionally silent command output
better logging
rearrange function order