specs passing, mild refactorage
factored out the raise/return behavior into classes
commented out some crappy specs