 #
 
 '.source.js':
-
-  'Ember Run':
+  'import Ember':
+   'prefix': 'imE'
+   'body': """
+      import Ember from 'ember';
+      const { ${1} } = Ember;
+    """
+  'const {} = Ember':
+   'prefix': 'cE'
+   'body': """
+      const { ${1} } = Ember;
+    """
+
+  'Ember run':
     'prefix': 'run'
-    'body': """
-      Ember.run(function() {
+    'body':"""
+      run(() => {
+        ${1}
+      });
+    """
+  #
+  #
+  # Ember Object Snippets
+  #
+  'Ember let get()':
+    'prefix': 'lget'
+    'body': 'let $1 = this.get(\'$1\');'
+
+  'Ember set':
+   'prefix': 'set'
+   'body': "set('${1}', ${2});"
+
+  'Ember get':
+   'prefix': 'get'
+   'body': 'this.get(\'${1}\');'
+
+  'super':
+   'prefix': 'super'
+   'body': 'this._super(...arguments);'
+
+  'Ember init':
+    'prefix': 'init'
+    'body':"""
+      init(){
+        this._super(...arguments);
+        ${1}
+      },
+    """
+
+  'Ember inject.service':
+   'prefix': 'inject'
+   'body': 'inject.service(${1}),'
+
+  'Ember Computed Property':
+    'prefix': 'computed'
+    'body': """
+      ${1:fooCount}: computed('${2:property}', function() {
+        ${3:// body}
+      }),
+    """
+
+  'Ember Observer':
+    'prefix': 'observer'
+    'body': """
+      ${1:fooChanged}: observer('${2:property}', function() {
+        ${3:// body}
+      }),
+    """
+
+  'Ember Event':
+    'prefix': 'on'
+    'body': """
+      ${1:event}: on('${2:property}', function() {
+        ${3:// body}
+      }),
+    """
+
+  'Ember Actions':
+    'prefix': 'actions'
+    'body': """
+      actions: {
         ${1:// body}
-      });
-    """
-
+      }
+    """
+
+  'Ember Computed Alias':
+    'prefix': 'alias'
+    'body': """
+      ${1:foo}: computed.alias('${2:property}'),
+    """
+
+  #
+  #
+  # Route Snippets
+  #
+  'Ember Route.model':
+    'prefix': 'model'
+    'body': """
+      model(params = {}) {
+        return this.store.query('${1}', params);
+      },
+    """
+  'setupController':
+    'prefix': 'setupController'
+    'body':"""
+      setupController(controller, model) {
+        this._super(controller, model);
+        ${1}
+      },
+
+    """
+  'afterModel':
+    'prefix': 'afterModel'
+    'body':"""
+      afterModel(model, transition) {
+        ${1}
+      },
+
+    """
+
+
+  #
+  #
+  # Component Snippets
+  #
+  'didReceiveAttrs':
+    'prefix': 'didReceiveAttrs'
+    'body':"""
+      didReceiveAttrs(){
+        this._super(...arguments);
+        ${1}
+      },
+
+    """
+
+  'didRender':
+    'prefix': 'didRender'
+    'body':"""
+      didRender(){
+        this._super(...arguments);
+        ${1}
+      },
+    """
+
+  'didInsertElement':
+    'prefix': 'didInsertElement'
+    'body':"""
+      didInsertElement(){
+        this._super(...arguments);
+        ${1}
+      },
+    """
+
+  'willDestroyElement':
+    'prefix': 'willDestroyElement'
+    'body':"""
+      willDestroyElement(){
+        this._super(...arguments);
+        ${1}
+      },
+    """
   #
   #
   # Enumerables

    'prefix': 'find-element'
    'body': "find('${1:selector}', '${2:context}');"

  'Ember And Then':
    'prefix': 'and-then'
    'body': """
      andThen(function() {
        ${1:// body}
      });
    """


        ${1:# body}
    """

  'Ember Computed Property':
    'prefix': 'computed'
    'body': """
      ${1:fooCount}: Ember.computed '${2:property}', ->
        ${4:# body}
    """

  'Ember Observer':
    'prefix': 'observer'
    'body': """
      ${1:fooChanged}: Ember.observer '${2:property}', ->
        ${3:# body}
    """

  'Ember Event':
    'prefix': 'on'
    'body': """
      ${1:event}: Ember.on '${2:property}', ->
        ${3:# body}
    """

  'Ember Actions':
    'prefix': 'actions'
    'body': """
      actions:
        ${1:# body}
    """

  'Ember Computed Alias':
    'prefix': 'alias'
    'body': """
      ${1:foo}: Ember.computed.alias '${2:property}'
    """

  #
  # Logger
