es6 first pass