Adding Listener model, and refactoring to use has_many through relationships