Tweaked to use super() and raise exceptions instead of just printing
Reused terser program description from github