completed exception handling overhaul. closes #12