reconfigured for ES6 Harmony