Throws exception when overriding important methods, add to_s and inspect to event and state, moved some methods around
updated the tests