Initial specs. Still need to refactor handleEvent, but things are working.