#1 Reorganized errors
#4 Divided process() and rollbackFailed() methods onto each state