add argument parsing, more easily support multiple projects, and tweak logging