new features, unit tests with QUnit, refactoring