Issue #56 - refactor and feature upgrade

I went ahead and knocked out some of the low-hanging fruit I knew I was gonna push back on later; now you can just focus on error reproduction / elimination.