diff --git a/.eslintrc b/.eslintrc.json
similarity index 98%
rename from .eslintrc
rename to .eslintrc.json
index 70bb81c3..6cf3d14b 100644
--- a/.eslintrc
+++ b/.eslintrc.json
@@ -2,7 +2,8 @@
   "extends": "eslint:recommended",
   "env": {
     "node": true,
-    "mocha": true
+    "mocha": true,
+    "es6": true
   },
   "rules": {
     "array-bracket-spacing": [
diff --git a/.travis.yml b/.travis.yml
index abcad3de..33c6d1e1 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,6 +1,6 @@
 sudo: false
 language: node_js
 node_js:
-  - stable
-  - 5
+  - node
+  - 6
   - 4
diff --git a/app/index.js b/app/index.js
index 8b885ade..a3dd6ebb 100644
--- a/app/index.js
+++ b/app/index.js
@@ -1,10 +1,10 @@
 'use strict';
-var path = require('path');
-var generators = require('yeoman-generator');
-var askName = require('inquirer-npm-name');
-var _ = require('lodash');
-var extend = require('deep-extend');
-var mkdirp = require('mkdirp');
+const path = require('path');
+const Generator = require('yeoman-generator');
+const askName = require('inquirer-npm-name');
+const _ = require('lodash');
+const extend = require('deep-extend');
+const mkdirp = require('mkdirp');
 
 function makeGeneratorName(name) {
   name = _.kebabCase(name);
@@ -12,26 +12,26 @@ function makeGeneratorName(name) {
   return name;
 }
 
-module.exports = generators.Base.extend({
-  initializing: function () {
+module.exports = class extends Generator {
+  initializing() {
     this.props = {};
-  },
+  }
 
-  prompting: function () {
+  prompting() {
     return askName({
       name: 'name',
       message: 'Your generator name',
       default: makeGeneratorName(path.basename(process.cwd())),
       filter: makeGeneratorName,
-      validate: function (str) {
+      validate: str => {
         return str.length > 'generator-'.length;
       }
-    }, this).then(function (props) {
+    }, this).then(props => {
       this.props.name = props.name;
-    }.bind(this));
-  },
+    });
+  }
 
-  default: function () {
+  default() {
     if (path.basename(this.destinationPath()) !== this.props.name) {
       this.log(
         'Your generator must be inside a folder named ' + this.props.name + '\n' +
@@ -41,51 +41,47 @@ module.exports = generators.Base.extend({
       this.destinationRoot(this.destinationPath(this.props.name));
     }
 
-    var readmeTpl = _.template(this.fs.read(this.templatePath('README.md')));
+    const readmeTpl = _.template(this.fs.read(this.templatePath('README.md')));
 
-    this.composeWith('node:app', {
-      options: {
-        babel: false,
-        boilerplate: false,
-        name: this.props.name,
-        projectRoot: 'generators',
-        skipInstall: this.options.skipInstall,
-        readme: readmeTpl({
-          generatorName: this.props.name,
-          yoName: this.props.name.replace('generator-', '')
-        })
-      }
-    }, {
-      local: require('generator-node').app
+    this.composeWith(require.resolve('generator-node/generators/app'), {
+      babel: false,
+      boilerplate: false,
+      name: this.props.name,
+      projectRoot: 'generators',
+      skipInstall: this.options.skipInstall,
+      readme: readmeTpl({
+        generatorName: this.props.name,
+        yoName: this.props.name.replace('generator-', '')
+      })
     });
 
-    this.composeWith('generator:subgenerator', {
+    this.composeWith(require.resolve('../subgenerator'), {
       arguments: ['app']
-    }, {
-      local: require.resolve('../subgenerator')
     });
-  },
+  }
+
+  writing() {
+    const pkg = this.fs.readJSON(this.destinationPath('package.json'), {});
+    const generatorGeneratorPkg = require('../package.json');
 
-  writing: function () {
-    var pkg = this.fs.readJSON(this.destinationPath('package.json'), {});
     extend(pkg, {
       dependencies: {
-        'yeoman-generator': '^0.23.0',
-        chalk: '^1.0.0',
-        yosay: '^1.0.0'
+        'yeoman-generator': generatorGeneratorPkg.dependencies['yeoman-generator'],
+        chalk: generatorGeneratorPkg.dependencies.chalk,
+        yosay: generatorGeneratorPkg.dependencies.yosay
       },
       devDependencies: {
-        'yeoman-test': '^1.0.0',
-        'yeoman-assert': '^2.0.0'
+        'yeoman-test': generatorGeneratorPkg.devDependencies['yeoman-test'],
+        'yeoman-assert': generatorGeneratorPkg.devDependencies['yeoman-assert']
       }
     });
     pkg.keywords = pkg.keywords || [];
     pkg.keywords.push('yeoman-generator');
 
     this.fs.writeJSON(this.destinationPath('package.json'), pkg);
-  },
+  }
 
-  install: function () {
+  install() {
     this.installDependencies({bower: false});
   }
-});
+};
diff --git a/gulpfile.js b/gulpfile.js
index 2187a409..7bc3e7f6 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -1,15 +1,15 @@
 'use strict';
-var path = require('path');
-var gulp = require('gulp');
-var eslint = require('gulp-eslint');
-var excludeGitignore = require('gulp-exclude-gitignore');
-var mocha = require('gulp-mocha');
-var istanbul = require('gulp-istanbul');
-var nsp = require('gulp-nsp');
-var plumber = require('gulp-plumber');
-var coveralls = require('gulp-coveralls');
-
-gulp.task('static', function () {
+const path = require('path');
+const gulp = require('gulp');
+const eslint = require('gulp-eslint');
+const excludeGitignore = require('gulp-exclude-gitignore');
+const mocha = require('gulp-mocha');
+const istanbul = require('gulp-istanbul');
+const nsp = require('gulp-nsp');
+const plumber = require('gulp-plumber');
+const coveralls = require('gulp-coveralls');
+
+gulp.task('static', () => {
   return gulp.src('**/*.js')
     .pipe(excludeGitignore())
     .pipe(eslint())
@@ -17,11 +17,11 @@ gulp.task('static', function () {
     .pipe(eslint.failAfterError());
 });
 
-gulp.task('nsp', function (cb) {
+gulp.task('nsp', cb => {
   nsp({package: path.resolve('package.json')}, cb);
 });
 
-gulp.task('pre-test', function () {
+gulp.task('pre-test', () => {
   return gulp.src([
     'app/index.js',
     'subgenerator/index.js'
@@ -32,22 +32,22 @@ gulp.task('pre-test', function () {
     .pipe(istanbul.hookRequire());
 });
 
-gulp.task('test', ['pre-test'], function (cb) {
-  var mochaErr;
+gulp.task('test', ['pre-test'], cb => {
+  let mochaErr;
 
   gulp.src('test/**/*.js')
     .pipe(plumber())
     .pipe(mocha({reporter: 'spec', timeout: 10000}))
-    .on('error', function (err) {
+    .on('error', err => {
       mochaErr = err;
     })
     .pipe(istanbul.writeReports())
-    .on('end', function () {
+    .on('end', () => {
       cb(mochaErr);
     });
 });
 
-gulp.task('coveralls', ['test'], function () {
+gulp.task('coveralls', ['test'], () => {
   if (!process.env.CI) {
     return;
   }
diff --git a/package.json b/package.json
index f50d3397..45b90fea 100644
--- a/package.json
+++ b/package.json
@@ -25,30 +25,29 @@
     "node": ">=4.0.0"
   },
   "dependencies": {
-    "chalk": "^1.0.0",
-    "deep-extend": "^0.4.0",
-    "generator-node": "^1.7.0",
+    "chalk": "^1.1.3",
+    "deep-extend": "^0.4.1",
+    "generator-node": "^1.12.1",
     "inquirer-npm-name": "^2.0.0",
-    "lodash": "^4.6.1",
+    "lodash": "^4.17.2",
     "mkdirp": "^0.5.1",
-    "superb": "^1.0.0",
-    "yeoman-generator": "^0.23.3",
-    "yosay": "^1.0.2"
+    "superb": "^1.3.0",
+    "yeoman-generator": "^1.0.0-rc1",
+    "yosay": "^1.2.1"
   },
   "devDependencies": {
-    "gulp": "^3.6.0",
-    "gulp-coveralls": "^0.1.0",
+    "gulp": "^3.9.1",
+    "gulp-coveralls": "^0.1.4",
     "gulp-eslint": "^2.0.0",
-    "gulp-exclude-gitignore": "^1.0.0",
-    "gulp-istanbul": "^0.10.3",
-    "gulp-mocha": "^2.0.0",
-    "gulp-nsp": "^2.1.0",
-    "gulp-plumber": "^1.0.0",
-    "mocha": "^2.2.5",
-    "mockery": "^1.4.0",
-    "yeoman-assert": "^2.0.0",
-    "yeoman-test": "^1.0.0",
-    "pinkie-promise": "^2.0.1"
+    "gulp-exclude-gitignore": "^1.1.1",
+    "gulp-istanbul": "^1.1.1",
+    "gulp-mocha": "^3.0.1",
+    "gulp-nsp": "^2.4.2",
+    "gulp-plumber": "^1.1.0",
+    "mocha": "^3.2.0",
+    "mockery": "^2.0.0",
+    "yeoman-assert": "^2.2.1",
+    "yeoman-test": "^1.6.0"
   },
   "license": "MIT"
 }
diff --git a/subgenerator/index.js b/subgenerator/index.js
index 5d279f06..f1ee5d63 100644
--- a/subgenerator/index.js
+++ b/subgenerator/index.js
@@ -1,44 +1,44 @@
 'use strict';
-var path = require('path');
-var generators = require('yeoman-generator');
-var superb = require('superb');
+const path = require('path');
+const Generator = require('yeoman-generator');
+const superb = require('superb');
 
-module.exports = generators.Base.extend({
-  constructor: function () {
-    generators.Base.apply(this, arguments);
+module.exports = class extends Generator {
+  constructor(args, opts) {
+    super(args, opts);
 
-    this.argument('namespace', {
+    this.argument('name', {
       type: String,
       required: true,
-      description: 'Generator namespace'
+      description: 'Generator name'
     });
-  },
+  }
 
-  writing: function () {
-    var generatorName = this.fs.readJSON(this.destinationPath('package.json')).name;
+  writing() {
+    const generatorName = this.fs.readJSON(this.destinationPath('package.json')).name;
 
     this.fs.copyTpl(
       this.templatePath('index.js'),
-      this.destinationPath(path.join('generators', this.namespace, 'index.js')),
+      this.destinationPath(path.join('generators', this.options.name, 'index.js')),
       {
         // Escape apostrophes from superb to not conflict with JS strings
         superb: superb().replace('\'', '\\\''),
-        generatorName: generatorName
+        generatorName
       }
     );
 
     this.fs.copy(
       this.templatePath('templates/**'),
-      this.destinationPath(path.join('generators', this.namespace, 'templates'))
+      this.destinationPath(path.join('generators', this.options.name, 'templates'))
     );
 
     this.fs.copyTpl(
       this.templatePath('test.js'),
-      this.destinationPath('test/' + this.namespace + '.js'),
+      this.destinationPath('test/' + this.options.name + '.js'),
       {
-        namespace: this.namespace,
-        generatorName: generatorName
+        name: this.options.name,
+        generatorName
       }
     );
   }
-});
+};
diff --git a/subgenerator/templates/index.js b/subgenerator/templates/index.js
index 6b26f237..8571d192 100644
--- a/subgenerator/templates/index.js
+++ b/subgenerator/templates/index.js
@@ -1,9 +1,9 @@
 'use strict';
-var yeoman = require('yeoman-generator');
+var Generator = require('yeoman-generator');
 var chalk = require('chalk');
 var yosay = require('yosay');
 
-module.exports = yeoman.Base.extend({
+module.exports = Generator.extend({
   prompting: function () {
     // Have Yeoman greet the user.
     this.log(yosay(
diff --git a/subgenerator/templates/test.js b/subgenerator/templates/test.js
index 1a2bda0c..2eacee89 100644
--- a/subgenerator/templates/test.js
+++ b/subgenerator/templates/test.js
@@ -3,9 +3,9 @@ var path = require('path');
 var assert = require('yeoman-assert');
 var helpers = require('yeoman-test');
 
-describe('<%- generatorName %>:<%- namespace %>', function () {
+describe('<%- generatorName %>:<%- name %>', function () {
   before(function () {
-    return helpers.run(path.join(__dirname, '../generators/<%- namespace %>'))
+    return helpers.run(path.join(__dirname, '../generators/<%- name %>'))
       .withPrompts({someAnswer: true})
       .toPromise();
   });
diff --git a/test/app.js b/test/app.js
index 29779577..1affcba9 100644
--- a/test/app.js
+++ b/test/app.js
@@ -1,32 +1,31 @@
 'use strict';
-var path = require('path');
-var assert = require('yeoman-assert');
-var helpers = require('yeoman-test');
-var mockery = require('mockery');
-var Promise = require('pinkie-promise');
+const path = require('path');
+const assert = require('yeoman-assert');
+const helpers = require('yeoman-test');
+const mockery = require('mockery');
 
-describe('generator:app', function () {
-  before(function () {
+describe('generator:app', () => {
+  before(() => {
     mockery.enable({
       warnOnReplace: false,
       warnOnUnregistered: false
     });
 
-    mockery.registerMock('superb', function () {
+    mockery.registerMock('superb', () => {
       return 'cat\'s meow';
     });
 
-    mockery.registerMock('npm-name', function () {
+    mockery.registerMock('npm-name', () => {
       return Promise.resolve(true);
     });
   });
 
-  after(function () {
+  after(() => {
     mockery.disable();
   });
 
-  describe('defaults', function () {
-    before(function () {
+  describe('defaults', () => {
+    before(() => {
       return helpers.run(path.join(__dirname, '../app'))
         .withPrompts({
           name: 'generator-temp',
@@ -42,12 +41,12 @@ describe('generator:app', function () {
         .toPromise();
     });
 
-    it('created and CD into a folder named like the generator', function () {
+    it('created and CD into a folder named like the generator', () => {
       assert.equal(path.basename(process.cwd()), 'generator-temp');
     });
 
-    it('creates files', function () {
-      var expected = [
+    it('creates files', () => {
+      const expected = [
         'README.md',
         'package.json',
         'generators/app/index.js',
@@ -58,23 +57,23 @@ describe('generator:app', function () {
       assert.file(expected);
     });
 
-    it('fills package.json with correct information', function () {
+    it('fills package.json with correct information', () => {
       assert.JSONFileContent('package.json', {
         name: 'generator-temp',
         dependencies: {
-          'yeoman-generator': '^0.23.0',
-          chalk: '^1.0.0',
-          yosay: '^1.0.0'
+          'yeoman-generator': '^1.0.0-rc1',
+          chalk: '^1.1.3',
+          yosay: '^1.2.1'
         },
         devDependencies: {
-          'yeoman-assert': '^2.0.0',
-          'yeoman-test': '^1.0.0'
+          'yeoman-test': '^1.6.0',
+          'yeoman-assert': '^2.2.1'
         },
         keywords: ['yeoman-generator']
       });
     });
 
-    it('fills the README with project data', function () {
+    it('fills the README with project data', () => {
       assert.fileContent('README.md', '# generator-temp');
       assert.fileContent('README.md', 'npm install -g yo');
       assert.fileContent('README.md', 'npm install -g generator-temp');
diff --git a/test/subgenerator.js b/test/subgenerator.js
index 7c75335f..6374300e 100644
--- a/test/subgenerator.js
+++ b/test/subgenerator.js
@@ -1,25 +1,27 @@
 'use strict';
-var path = require('path');
-var assert = require('yeoman-assert');
-var helpers = require('yeoman-test');
-var fs = require('fs');
-var mockery = require('mockery');
+const path = require('path');
+const assert = require('yeoman-assert');
+const helpers = require('yeoman-test');
+const fs = require('fs');
+const mockery = require('mockery');
 
-describe('generator:subgenerator', function () {
-  before(function () {
+describe('generator:subgenerator', () => {
+  before(() => {
     mockery.enable({
       warnOnReplace: false,
       warnOnUnregistered: false
     });
 
-    mockery.registerMock('superb', function () {
+    mockery.registerMock('superb', () => {
       return 'cat\'s meow';
     });
 
     return helpers.run(path.join(__dirname, '../subgenerator'))
       .withArguments(['foo'])
-      .withOptions({force: true})
-      .inTmpDir(function (tmpDir) {
+      .withOptions({
+        force: true
+      })
+      .inTmpDir(tmpDir => {
         fs.writeFileSync(
           path.join(tmpDir, 'package.json'),
           '{"name": "generator-foo", "files":[]}'
@@ -28,11 +30,11 @@ describe('generator:subgenerator', function () {
       .toPromise();
   });
 
-  after(function () {
+  after(() => {
     mockery.disable();
   });
 
-  it('creates files', function () {
+  it('creates files', () => {
     assert.file([
       'generators/foo/index.js',
       'generators/foo/templates/dummyfile.txt',
@@ -40,12 +42,12 @@ describe('generator:subgenerator', function () {
     ]);
   });
 
-  it('configures the test file', function () {
+  it('configures the test file', () => {
     assert.fileContent('test/foo.js', 'describe(\'generator-foo:foo');
     assert.fileContent('test/foo.js', '../generators/foo');
   });
 
-  it('escapes possible apostrophes from superb', function () {
+  it('escapes possible apostrophes from superb', () => {
     assert.fileContent('generators/foo/index.js', 'Welcome to the cat\\\'s meow');
   });
 });