refactored to use bower.json