redone with CoffeeScript
removed old implementation
re-release with CoffeeScript