add ES6 promise polyfill
refactor app to be promise based