added event model and controller the TDD way, all test passed, but require refactor