1. keep program name around
2. decorate version
3. better error messages for derive macro
