refactoring: splitting concerns, using more coffeescript operators