a whole lot of hook and block refactoring