diff --git a/modules/angular2/directives.js b/modules/angular2/directives.js
index b96135cd13..6a1b817ab5 100644
--- a/modules/angular2/directives.js
+++ b/modules/angular2/directives.js
@@ -1,4 +1,4 @@
-export * from './src/directives/ng_if';
-export * from './src/directives/ng_non_bindable';
-export * from './src/directives/ng_repeat';
-export * from './src/directives/ng_switch';
+export * from './src/directives/foreach';
+export * from './src/directives/if';
+export * from './src/directives/non_bindable';
+export * from './src/directives/switch';
diff --git a/modules/angular2/docs/core/01_templates.md b/modules/angular2/docs/core/01_templates.md
index 6d50cde555..a85506bb9a 100644
--- a/modules/angular2/docs/core/01_templates.md
+++ b/modules/angular2/docs/core/01_templates.md
@@ -157,7 +157,7 @@ Example:
 
 ```
 <ul>
-  <li template="ng-repeat: #item in items">
+  <li template="foreach: #item in items">
     {{item}}
   </li>
 </ul>
@@ -169,8 +169,8 @@ Example:
 Example:
 ```
 <ul>
-  <template def-ng-repeat:"item"
-            bind-ng-repeat-in="items">
+  <template def-foreach:"item"
+            bind-foreach-in="items">
     <li>
       {{item}}
     </li>
@@ -187,8 +187,8 @@ Example:
 Example:
 
 ```
-<template #ng-repeat="item"
-          [ng-repeat-in]="items">
+<template #foreach="item"
+          [foreach-in]="items">
   _some_content_to_repeat_
 </template>
 ```
@@ -198,8 +198,8 @@ Example:
 
 Example:
 ```
-<template def-ng-repeat="item"
-          bind-ng-repeat-in="items">
+<template def-foreach="item"
+          bind-foreach-in="items">
   _some_content_to_repeat_
 </template>
 ```
@@ -345,20 +345,20 @@ Example of conditionally included template:
 
 ```
 Hello {{user}}!
-<div template="ng-if: isAdimnistrator">
+<div template="if: isAdimnistrator">
   ...administrator menu here...
 </div>
 ```
 
-In the above example the `ng-if` instantiator determins if the child view (an instance of the child template) should be
-inserted into ther root view. The `ng-if` makes this decision based on if the `isAdimnistrator` binding is true.
+In the above example the `if` instantiator determins if the child view (an instance of the child template) should be
+inserted into ther root view. The `if` makes this decision based on if the `isAdimnistrator` binding is true.
 
 The above example is in the shart form, for better clarity let's rewrite it in the canonical form, which is functionaly
 identical.
 
 ```
 Hello {{user}}!
-<template [ng-if]="isAdimnistrator">
+<template [if]="isAdimnistrator">
   <div>
     ...administrator menu here...
   </div>
@@ -371,22 +371,22 @@ NOTE: Only Instantiator directives can be placed on the template element. (Decor
 ### Template Microsyntax
 
 Often times it is necessary to encode a lot of different bindings into a template to controll how the instantiation
-of the templates occures. One such example is ng-repeat.
+of the templates occures. One such example is foreach.
 
 ```
 <form #foo=form>
 </form>
 <ul>
-  <template ng-repeat #person [in]="people" #i="index">
+  <template foreach #person [in]="people" #i="index">
     <li>{{i}}. {{item}}<li>
   </template>
 </ul>
 ```
 
 Where:
-* `ng-repeat` triggers the ng-repeat directive.
-* `[in]="people"` binds to an iterable object to the `ng-repeat` controller.
-* `#person` exports the implicit `ng-repeat` item.
+* `foreach` triggers the foreach directive.
+* `[in]="people"` binds to an iterable object to the `foreach` controller.
+* `#person` exports the implicit `foreach` item.
 * `#i=index` exports item index as `i`.
 
 The above example is explicit but quite wordy, for this reason in most situatios a short hand version of the
@@ -394,7 +394,7 @@ syntax is prefferable.
 
 ```
 <ul>
-  <li template="ng-repeat; #person; in=people; #i=index;">{{i}}. {{item}}<li>
+  <li template="foreach; #person; in=people; #i=index;">{{i}}. {{item}}<li>
 </ul>
 ```
 
@@ -404,16 +404,16 @@ which allows us to further shorten the text.
 
 ```
 <ul>
-  <li template="ng-repeat #person in people #i=index">{{i}}. {{item}}<li>
+  <li template="foreach #person in people #i=index">{{i}}. {{item}}<li>
 </ul>
 ```
 
-We can also optionaly use `var` instead of `#` and add `:` to `ng-repeat` which creates the following recomended
-microsyntax for `ng-repeat`.
+We can also optionaly use `var` instead of `#` and add `:` to `foreach` which creates the following recomended
+microsyntax for `foreach`.
 
 ```
 <ul>
-  <li template="ng-repeat: var person in people; var i=index">{{i}}. {{item}}<li>
+  <li template="foreach: var person in people; var i=index">{{i}}. {{item}}<li>
 </ul>
 ```
 
@@ -524,7 +524,7 @@ Angular are:
 <div title="{{expression}}">{{expression}}</div>
 <div [title]="expression">...</div>
 <div bind-title="expression">...</div>
-<div template="ng-if: expression">...</div>
+<div template="if: expression">...</div>
 ```
 
 Expressions are simplified version of expression in the langugage in which you are writing your application. (i.e. 
diff --git a/modules/angular2/docs/core/02_directives.md b/modules/angular2/docs/core/02_directives.md
index 2db559fae0..730f0b368d 100644
--- a/modules/angular2/docs/core/02_directives.md
+++ b/modules/angular2/docs/core/02_directives.md
@@ -10,7 +10,7 @@ There are three different kinds of directives (described in mored detailed in la
 
 1. *Decorators*: can be placed on any DOM element and can be combined with other directives.
 2. *Components*: Components have encapsulated view and can configure injectors.
-3. *Instantiator*: Is responsible for adding or removing child views in parent view. (i.e. ng-repeat, ng-if)
+3. *Instantiator*: Is responsible for adding or removing child views in parent view. (i.e. foreach, if)
 
 
 
@@ -166,7 +166,7 @@ Example of usage:
 
 ## Instantiator
 
-Instantiator is a directive which can controll instantiation of child views which are then inserted into the DOM. (Examples are `ng-if` and `ng-repeat`.) 
+Instantiator is a directive which can controll instantiation of child views which are then inserted into the DOM. (Examples are `if` and `foreach`.) 
 
 * Instantiators can only be placed on `<template>` elements (or the short hand version which uses `<element template>` attribute.)
 * Only one instantiator can be present per DOM template element.
@@ -179,12 +179,12 @@ Instantiator is a directive which can controll instantiation of child views whic
 
 ```
 @Instantiator({
-  selector: '[ng-if]',
+  selector: '[if]',
   bind: {
-    'ng-if': 'condition'
+    'if': 'condition'
   }
 })
-export class NgIf {
+export class If {
   viewPort: ViewPort;
   view: View;
 
diff --git a/modules/angular2/docs/core/10_view.md b/modules/angular2/docs/core/10_view.md
index 209a0c6efb..0a9222c2d0 100644
--- a/modules/angular2/docs/core/10_view.md
+++ b/modules/angular2/docs/core/10_view.md
@@ -77,7 +77,7 @@ Let's start with a Template such as:
 
 ```
 <ul>
-  <li template="ng-repeat: person in people">{{person}}</li>
+  <li template="foreach: person in people">{{person}}</li>
 </ul>
 ```
 
@@ -102,28 +102,28 @@ The next step is to compose these two ProtoViews into actual view which is rende
 
 ```
 <ul>                    | viewA(SomeContexnt)
-  <template></template> | viewA(SomeContexnt): new NgRepeat(new ViewPort(protoViewB))
+  <template></template> | viewA(SomeContexnt): new Foreach(new ViewPort(protoViewB))
 </ul>                   | viewA(SomeContexnt)
 ```
 
-*Step2:* Instantiate `NgRepeat` directive which will receive the `ViewPort`. (The ViewPort has reference to `protoViewA`).
+*Step2:* Instantiate `Foreach` directive which will receive the `ViewPort`. (The ViewPort has reference to `protoViewA`).
 
 
-*Step3:* As the `NgRepeat` unrolls it asks the `ViewPort` to instantiate `protoViewB` and insert it after the `ViewPort` anchor. This is repeated for each `person` in `people`. Notice that 
+*Step3:* As the `Foreach` unrolls it asks the `ViewPort` to instantiate `protoViewB` and insert it after the `ViewPort` anchor. This is repeated for each `person` in `people`. Notice that 
 
 ```
 <ul>                    | viewA(someContext)
-  <template></template> | viewA(someContext): new NgRepeat(new ViewPort(protoViewB))
+  <template></template> | viewA(someContext): new Foreach(new ViewPort(protoViewB))
   <li>{{person}}</li>   | viewB0(locals0(someContext))
   <li>{{person}}</li>   | viewB1(locals0(someContext))
 </ul>                   | viewA(lomeContexnt)
 ```
 
-*Step4:* All of the bindings in the child Views are updated. Notice that in the case of `NgRepeat` the evaluation context for the `viewB0` and `viewB1` are `locals0` and `locals1` respectively. Locals allow the introduction of new local variables visible only within the scope of the View, and delegate any unknown references to the parent context.
+*Step4:* All of the bindings in the child Views are updated. Notice that in the case of `Foreach` the evaluation context for the `viewB0` and `viewB1` are `locals0` and `locals1` respectively. Locals allow the introduction of new local variables visible only within the scope of the View, and delegate any unknown references to the parent context.
 
 ```
 <ul>                    | viewA
-  <template></template> | viewA: new NgRepeat(new ViewPort(protoViewB))
+  <template></template> | viewA: new Foreach(new ViewPort(protoViewB))
   <li>Alice</li>        | viewB0
   <li>Bob</li>          | viewB1
 </ul>                   | viewA
diff --git a/modules/angular2/src/directives/ng_repeat.js b/modules/angular2/src/directives/foreach.js
similarity index 93%
rename from modules/angular2/src/directives/ng_repeat.js
rename to modules/angular2/src/directives/foreach.js
index 48c972ef0e..16de07fe31 100644
--- a/modules/angular2/src/directives/ng_repeat.js
+++ b/modules/angular2/src/directives/foreach.js
@@ -6,12 +6,12 @@ import {isPresent, isBlank} from 'angular2/src/facade/lang';
 import {ListWrapper} from 'angular2/src/facade/collection';
 
 @Template({
-  selector: '[ng-repeat]',
+  selector: '[foreach][in]',
   bind: {
     'in': 'iterable[]'
   }
 })
-export class NgRepeat extends OnChange {
+export class Foreach extends OnChange {
   viewPort: ViewPort;
   iterable;
   constructor(viewPort: ViewPort) {
@@ -35,13 +35,13 @@ export class NgRepeat extends OnChange {
       (movedRecord) => ListWrapper.push(recordViewTuples, new RecordViewTuple(movedRecord, null))
     );
 
-    var insertTuples = NgRepeat.bulkRemove(recordViewTuples, this.viewPort);
+    var insertTuples = Foreach.bulkRemove(recordViewTuples, this.viewPort);
 
     iteratorChanges.currentValue.forEachAddedItem(
       (addedRecord) => ListWrapper.push(insertTuples, new RecordViewTuple(addedRecord, null))
     );
 
-    NgRepeat.bulkInsert(insertTuples, this.viewPort);
+    Foreach.bulkInsert(insertTuples, this.viewPort);
 
     for (var i = 0; i < insertTuples.length; i++) {
       this.perViewChange(insertTuples[i].view, insertTuples[i].record);
diff --git a/modules/angular2/src/directives/ng_if.js b/modules/angular2/src/directives/if.js
similarity index 91%
rename from modules/angular2/src/directives/ng_if.js
rename to modules/angular2/src/directives/if.js
index 1b6c457f44..29d21d12a6 100644
--- a/modules/angular2/src/directives/ng_if.js
+++ b/modules/angular2/src/directives/if.js
@@ -3,12 +3,12 @@ import {ViewPort} from 'angular2/src/core/compiler/viewport';
 import {isBlank} from 'angular2/src/facade/lang';
 
 @Template({
-  selector: '[ng-if]',
+  selector: '[if]',
   bind: {
-    'ng-if': 'condition'
+    'if': 'condition'
   }
 })
-export class NgIf {
+export class If {
   viewPort: ViewPort;
   prevCondition: boolean;
 
diff --git a/modules/angular2/src/directives/ng_non_bindable.js b/modules/angular2/src/directives/non_bindable.js
similarity index 64%
rename from modules/angular2/src/directives/ng_non_bindable.js
rename to modules/angular2/src/directives/non_bindable.js
index 28cf47a87e..c4978746dd 100644
--- a/modules/angular2/src/directives/ng_non_bindable.js
+++ b/modules/angular2/src/directives/non_bindable.js
@@ -1,8 +1,8 @@
 import {Decorator} from 'angular2/src/core/annotations/annotations';
 
 @Decorator({
-  selector: '[ng-non-bindable]',
+  selector: '[non-bindable]',
   compileChildren: false
 })
-export class NgNonBindable {
+export class NonBindable {
 }
diff --git a/modules/angular2/src/directives/ng_switch.js b/modules/angular2/src/directives/switch.js
similarity index 72%
rename from modules/angular2/src/directives/ng_switch.js
rename to modules/angular2/src/directives/switch.js
index b583f4aef8..e7ec734855 100644
--- a/modules/angular2/src/directives/ng_switch.js
+++ b/modules/angular2/src/directives/switch.js
@@ -7,37 +7,37 @@ import {ListWrapper, List, MapWrapper, Map} from 'angular2/src/facade/collection
 import {Parent} from 'angular2/src/core/annotations/visibility';
 
 /**
- * The `ngSwitch` directive is used to conditionally swap DOM structure on your template based on a
+ * The `Switch` directive is used to conditionally swap DOM structure on your template based on a
  * scope expression.
- * Elements within `ngSwitch` but without `ngSwitchWhen` or `ngSwitchDefault` directives will be
+ * Elements within `Switch` but without `SwitchWhen` or `SwitchDefault` directives will be
  * preserved at the location as specified in the template.
  *
- * `ngSwitch` simply chooses nested elements and makes them visible based on which element matches
+ * `Switch` simply chooses nested elements and makes them visible based on which element matches
  * the value obtained from the evaluated expression. In other words, you define a container element
- * (where you place the directive), place an expression on the **`[ng-switch]="..."` attribute**),
- * define any inner elements inside of the directive and place a `[ng-switch-when]` attribute per
+ * (where you place the directive), place an expression on the **`[switch]="..."` attribute**),
+ * define any inner elements inside of the directive and place a `[switch-when]` attribute per
  * element.
- * The when attribute is used to inform ngSwitch which element to display when the expression is
+ * The when attribute is used to inform Switch which element to display when the expression is
  * evaluated. If a matching expression is not found via a when attribute then an element with the
  * default attribute is displayed.
  *
  * Example:
  *
  * ```
- * <ANY [ng-switch]="expression">
- *   <template [ng-switch-when]="whenExpression1">...</template>
- *   <template [ng-switch-when]="whenExpression1">...</template>
- *   <template [ng-switch-default]>...</template>
+ * <ANY [switch]="expression">
+ *   <template [switch-when]="whenExpression1">...</template>
+ *   <template [switch-when]="whenExpression1">...</template>
+ *   <template [switch-default]>...</template>
  * </ANY>
  * ```
  */
 @Decorator({
-  selector: '[ng-switch]',
+  selector: '[switch]',
   bind: {
-    'ng-switch': 'value'
+    'switch': 'value'
   }
 })
-export class NgSwitch {
+export class Switch {
   _switchValue: any;
   _useDefault: boolean;
   _valueViewPorts: Map;
@@ -130,38 +130,38 @@ export class NgSwitch {
 /**
  * Defines a case statement as an expression.
  *
- * If multiple `ngSwitchWhen` match the `ngSwitch` value, all of them are displayed.
+ * If multiple `SwitchWhen` match the `Switch` value, all of them are displayed.
  *
  * Example:
  *
  * ```
  * // match against a context variable
- * <template [ng-switch-when]="contextVariable">...</template>
+ * <template [switch-when]="contextVariable">...</template>
  *
  * // match against a constant string
- * <template [ng-switch-when]="'stringValue'">...</template>
+ * <template [switch-when]="'stringValue'">...</template>
  * ```
  */
 @Template({
-  selector: '[ng-switch-when]',
+  selector: '[switch-when]',
   bind: {
-    'ng-switch-when' : 'when'
+    'switch-when' : 'when'
   }
 })
-export class NgSwitchWhen {
+export class SwitchWhen {
   _value: any;
-  _ngSwitch: NgSwitch;
+  _switch: Switch;
   _viewPort: ViewPort;
 
-  constructor(el: NgElement, viewPort: ViewPort, @Parent() ngSwitch: NgSwitch) {
+  constructor(el: NgElement, viewPort: ViewPort, @Parent() sswitch: Switch) {
     // `_whenDefault` is used as a marker for a not yet initialized value
     this._value = _whenDefault;
-    this._ngSwitch = ngSwitch;
+    this._switch = sswitch;
     this._viewPort = viewPort;
   }
 
   set when(value) {
-    this._ngSwitch._onWhenValueChanged(this._value, value, this._viewPort);
+    this._switch._onWhenValueChanged(this._value, value, this._viewPort);
     this._value = value;
   }
 }
@@ -170,20 +170,20 @@ export class NgSwitchWhen {
 /**
  * Defines a default case statement.
  *
- * Default case statements are displayed when no `NgSwitchWhen` match the `ngSwitch` value.
+ * Default case statements are displayed when no `SwitchWhen` match the `switch` value.
  *
  * Example:
  *
  * ```
- * <template [ng-switch-default]>...</template>
+ * <template [switch-default]>...</template>
  * ```
  */
 @Template({
-  selector: '[ng-switch-default]'
+  selector: '[switch-default]'
 })
-export class NgSwitchDefault {
-  constructor(viewPort: ViewPort, @Parent() ngSwitch: NgSwitch) {
-    ngSwitch._registerViewPort(_whenDefault, viewPort);
+export class SwitchDefault {
+  constructor(viewPort: ViewPort, @Parent() sswitch: Switch) {
+    sswitch._registerViewPort(_whenDefault, viewPort);
   }
 }
 
diff --git a/modules/angular2/test/directives/ng_repeat_spec.js b/modules/angular2/test/directives/foreach_spec.js
similarity index 86%
rename from modules/angular2/test/directives/ng_repeat_spec.js
rename to modules/angular2/test/directives/foreach_spec.js
index b94e44d636..bf0cbaee70 100644
--- a/modules/angular2/test/directives/ng_repeat_spec.js
+++ b/modules/angular2/test/directives/foreach_spec.js
@@ -6,7 +6,6 @@ import {Injector} from 'angular2/di';
 import {Lexer, Parser, ChangeDetector, dynamicChangeDetection} from 'angular2/change_detection';
 
 import {Compiler, CompilerCache} from 'angular2/src/core/compiler/compiler';
-import {OnChange} from 'angular2/src/core/compiler/interfaces';
 import {DirectiveMetadataReader} from 'angular2/src/core/compiler/directive_metadata_reader';
 import {NativeShadowDomStrategy} from 'angular2/src/core/compiler/shadow_dom_strategy';
 
@@ -15,20 +14,14 @@ import {TemplateConfig} from 'angular2/src/core/annotations/template_config';
 
 import {ViewPort} from 'angular2/src/core/compiler/viewport';
 import {MapWrapper, ListWrapper} from 'angular2/src/facade/collection';
-import {NgRepeat} from 'angular2/src/directives/ng_repeat';
+import {Foreach} from 'angular2/src/directives/foreach';
 
 export function main() {
-  describe('ng-repeat', () => {
+  describe('foreach', () => {
     var view, cd, compiler, component;
     beforeEach(() => {
-      compiler = new Compiler(
-        dynamicChangeDetection,
-        null,
-        new DirectiveMetadataReader(),
-        new Parser(new Lexer()),
-        new CompilerCache(),
-        new NativeShadowDomStrategy()
-      );
+      compiler = new Compiler(dynamicChangeDetection, null, new DirectiveMetadataReader(),
+        new Parser(new Lexer()), new CompilerCache(), new NativeShadowDomStrategy());
     });
 
     function createView(pv) {
@@ -42,7 +35,7 @@ export function main() {
       return compiler.compile(TestComponent, el(template));
     }
 
-    var TEMPLATE = '<div><copy-me template="ng-repeat #item in items">{{item.toString()}};</copy-me></div>';
+    var TEMPLATE = '<div><copy-me template="foreach #item in items">{{item.toString()}};</copy-me></div>';
 
     it('should reflect initial elements', (done) => {
       compileWithTemplate(TEMPLATE).then((pv) => {
@@ -109,7 +102,7 @@ export function main() {
     });
 
     it('should iterate over an array of objects', () => {
-      compileWithTemplate('<ul><li template="ng-repeat #item in items">{{item["name"]}};</li></ul>').then((pv) => {
+      compileWithTemplate('<ul><li template="foreach #item in items">{{item["name"]}};</li></ul>').then((pv) => {
         createView(pv);
 
         // INIT
@@ -133,7 +126,7 @@ export function main() {
     });
 
     it('should gracefully handle nulls', (done) => {
-      compileWithTemplate('<ul><li template="ng-repeat #item in null">{{item}};</li></ul>').then((pv) => {
+      compileWithTemplate('<ul><li template="foreach #item in null">{{item}};</li></ul>').then((pv) => {
         createView(pv);
         cd.detectChanges();
         expect(DOM.getText(view.nodes[0])).toEqual('');
@@ -183,8 +176,8 @@ export function main() {
 
   it('should repeat over nested arrays', (done) => {
     compileWithTemplate(
-        '<div><div template="ng-repeat #item in items">' +
-          '<div template="ng-repeat #subitem in item">' +
+        '<div><div template="foreach #item in items">' +
+          '<div template="foreach #subitem in item">' +
           '{{subitem}};' +
         '</div>|</div></div>'
     ).then((pv) => {
@@ -201,7 +194,7 @@ export function main() {
 
   it('should display indices correctly', (done) => {
     var INDEX_TEMPLATE =
-      '<div><copy-me template="ng-repeat: var item in items; var i=index">{{i.toString()}}</copy-me></div>';
+      '<div><copy-me template="foreach: var item in items; var i=index">{{i.toString()}}</copy-me></div>';
     compileWithTemplate(INDEX_TEMPLATE).then((pv) => {
       createView(pv);
       component.items = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
@@ -228,7 +221,7 @@ class Foo {
   selector: 'test-cmp',
   template: new TemplateConfig({
     inline: '',  // each test swaps with a custom template.
-    directives: [NgRepeat]
+    directives: [Foreach]
   })
 })
 class TestComponent {
diff --git a/modules/angular2/test/directives/ng_if_spec.js b/modules/angular2/test/directives/if_spec.js
similarity index 77%
rename from modules/angular2/test/directives/ng_if_spec.js
rename to modules/angular2/test/directives/if_spec.js
index aa43a3ec5f..a04a76f179 100644
--- a/modules/angular2/test/directives/ng_if_spec.js
+++ b/modules/angular2/test/directives/if_spec.js
@@ -1,4 +1,4 @@
-import {describe, xit, it, expect, beforeEach, ddescribe, iit, IS_DARTIUM, el} from 'angular2/test_lib';
+import {describe, xit, it, expect, beforeEach, ddescribe, iit, el, IS_DARTIUM} from 'angular2/test_lib';
 
 import {DOM} from 'angular2/src/facade/dom';
 
@@ -12,19 +12,14 @@ import {NativeShadowDomStrategy} from 'angular2/src/core/compiler/shadow_dom_str
 import {Component} from 'angular2/src/core/annotations/annotations';
 import {TemplateConfig} from 'angular2/src/core/annotations/template_config';
 
-import {NgIf} from 'angular2/src/directives/ng_if';
+import {If} from 'angular2/src/directives/if';
 
 export function main() {
-  describe('ng-if', () => {
+  describe('if directive', () => {
     var view, cd, compiler, component;
     beforeEach(() => {
-      compiler = new Compiler(
-        dynamicChangeDetection,
-        null,
-        new DirectiveMetadataReader(),
-        new Parser(new Lexer()),
-        new CompilerCache(),
-        new NativeShadowDomStrategy());
+      compiler = new Compiler(dynamicChangeDetection, null, new DirectiveMetadataReader(),
+        new Parser(new Lexer()), new CompilerCache(), new NativeShadowDomStrategy());
     });
 
     function createView(pv) {
@@ -39,7 +34,7 @@ export function main() {
     }
 
     it('should work in a template attribute', (done) => {
-      compileWithTemplate('<div><copy-me template="ng-if booleanCondition">hello</copy-me></div>').then((pv) => {
+      compileWithTemplate('<div><copy-me template="if booleanCondition">hello</copy-me></div>').then((pv) => {
         createView(pv);
         cd.detectChanges();
 
@@ -50,7 +45,7 @@ export function main() {
     });
 
     it('should work in a template element', (done) => {
-      compileWithTemplate('<div><template [ng-if]="booleanCondition"><copy-me>hello2</copy-me></template></div>').then((pv) => {
+      compileWithTemplate('<div><template [if]="booleanCondition"><copy-me>hello2</copy-me></template></div>').then((pv) => {
         createView(pv);
         cd.detectChanges();
 
@@ -61,7 +56,7 @@ export function main() {
     });
 
     it('should toggle node when condition changes', (done) => {
-      compileWithTemplate('<div><copy-me template="ng-if booleanCondition">hello</copy-me></div>').then((pv) => {
+      compileWithTemplate('<div><copy-me template="if booleanCondition">hello</copy-me></div>').then((pv) => {
         createView(pv);
 
         component.booleanCondition = false;
@@ -84,12 +79,12 @@ export function main() {
       });
     });
 
-    it('should update several nodes with ng-if', (done) => {
+    it('should update several nodes with if', (done) => {
       var templateString =
       '<div>' +
-        '<copy-me template="ng-if numberCondition + 1 >= 2">helloNumber</copy-me>' +
-        '<copy-me template="ng-if stringCondition == \'foo\'">helloString</copy-me>' +
-        '<copy-me template="ng-if functionCondition(stringCondition, numberCondition)">helloFunction</copy-me>' +
+        '<copy-me template="if numberCondition + 1 >= 2">helloNumber</copy-me>' +
+        '<copy-me template="if stringCondition == \'foo\'">helloString</copy-me>' +
+        '<copy-me template="if functionCondition(stringCondition, numberCondition)">helloFunction</copy-me>' +
       '</div>';
       compileWithTemplate(templateString).then((pv) => {
         createView(pv);
@@ -115,7 +110,7 @@ export function main() {
 
     if (!IS_DARTIUM) {
       it('should leave the element if the condition is a non-empty string (JS)', (done) => {
-        compileWithTemplate('<div><copy-me template="ng-if stringCondition">hello</copy-me></div>').then((pv) => {
+        compileWithTemplate('<div><copy-me template="if stringCondition">hello</copy-me></div>').then((pv) => {
           createView(pv);
           cd.detectChanges();
 
@@ -126,7 +121,7 @@ export function main() {
       });
 
       it('should leave the element if the condition is an object (JS)', (done) => {
-        compileWithTemplate('<div><copy-me template="ng-if objectCondition">hello</copy-me></div>').then((pv) => {
+        compileWithTemplate('<div><copy-me template="if objectCondition">hello</copy-me></div>').then((pv) => {
           createView(pv);
           cd.detectChanges();
 
@@ -137,7 +132,7 @@ export function main() {
       });
 
       it('should remove the element if the condition is null (JS)', (done) => {
-        compileWithTemplate('<div><copy-me template="ng-if nullCondition">hello</copy-me></div>').then((pv) => {
+        compileWithTemplate('<div><copy-me template="if nullCondition">hello</copy-me></div>').then((pv) => {
           createView(pv);
           cd.detectChanges();
 
@@ -148,7 +143,7 @@ export function main() {
       });
 
       it('should not add the element twice if the condition goes from true to true (JS)', (done) => {
-        compileWithTemplate('<div><copy-me template="ng-if numberCondition">hello</copy-me></div>').then((pv) => {
+        compileWithTemplate('<div><copy-me template="if numberCondition">hello</copy-me></div>').then((pv) => {
           createView(pv);
 
           cd.detectChanges();
@@ -165,7 +160,7 @@ export function main() {
       });
 
       it('should not recreate the element if the condition goes from true to true (JS)', (done) => {
-        compileWithTemplate('<div><copy-me template="ng-if numberCondition">hello</copy-me></div>').then((pv) => {
+        compileWithTemplate('<div><copy-me template="if numberCondition">hello</copy-me></div>').then((pv) => {
           createView(pv);
 
           cd.detectChanges();
@@ -180,7 +175,7 @@ export function main() {
       });
     } else {
       it('should not create the element if the condition is not a boolean (DART)', (done) => {
-        compileWithTemplate('<div><copy-me template="ng-if numberCondition">hello</copy-me></div>').then((pv) => {
+        compileWithTemplate('<div><copy-me template="if numberCondition">hello</copy-me></div>').then((pv) => {
           createView(pv);
           expect(function(){cd.detectChanges();}).toThrowError();
           expect(view.nodes[0].querySelectorAll('copy-me').length).toEqual(0);
@@ -197,7 +192,7 @@ export function main() {
   selector: 'test-cmp',
   template: new TemplateConfig({
     inline: '',  // each test swaps with a custom template.
-    directives: [NgIf]
+    directives: [If]
   })
 })
 class TestComponent {
diff --git a/modules/angular2/test/directives/ng_non_bindable_spec.js b/modules/angular2/test/directives/non_bindable_spec.js
similarity index 79%
rename from modules/angular2/test/directives/ng_non_bindable_spec.js
rename to modules/angular2/test/directives/non_bindable_spec.js
index bb796791d2..36f416ec37 100644
--- a/modules/angular2/test/directives/ng_non_bindable_spec.js
+++ b/modules/angular2/test/directives/non_bindable_spec.js
@@ -8,20 +8,14 @@ import {NativeShadowDomStrategy} from 'angular2/src/core/compiler/shadow_dom_str
 import {Decorator, Component} from 'angular2/src/core/annotations/annotations';
 import {TemplateConfig} from 'angular2/src/core/annotations/template_config';
 import {NgElement} from 'angular2/src/core/dom/element';
-import {NgNonBindable} from 'angular2/src/directives/ng_non_bindable';
+import {NonBindable} from 'angular2/src/directives/non_bindable';
 
 export function main() {
-  describe('ng-non-bindable', () => {
+  describe('non-bindable', () => {
     var view, cd, compiler, component;
     beforeEach(() => {
-      compiler = new Compiler(
-        dynamicChangeDetection,
-        null,
-        new DirectiveMetadataReader(),
-        new Parser(new Lexer()),
-        new CompilerCache(),
-        new NativeShadowDomStrategy()
-      );
+      compiler = new Compiler(dynamicChangeDetection,
+        null, new DirectiveMetadataReader(), new Parser(new Lexer()), new CompilerCache(), new NativeShadowDomStrategy());
     });
 
     function createView(pv) {
@@ -36,7 +30,7 @@ export function main() {
     }
 
     it('should not interpolate children', (done) => {
-      var template = '<div>{{text}}<span ng-non-bindable>{{text}}</span></div>';
+      var template = '<div>{{text}}<span non-bindable>{{text}}</span></div>';
       compileWithTemplate(template).then((pv) => {
         createView(pv);
         cd.detectChanges();
@@ -46,7 +40,7 @@ export function main() {
     });
 
     it('should ignore directives on child nodes', (done) => {
-      var template = '<div ng-non-bindable><span id=child test-dec>{{text}}</span></div>';
+      var template = '<div non-bindable><span id=child test-dec>{{text}}</span></div>';
       compileWithTemplate(template).then((pv) => {
         createView(pv);
         cd.detectChanges();
@@ -57,7 +51,7 @@ export function main() {
     });
 
     it('should trigger directives on the same node', (done) => {
-      var template = '<div><span id=child ng-non-bindable test-dec>{{text}}</span></div>';
+      var template = '<div><span id=child non-bindable test-dec>{{text}}</span></div>';
       compileWithTemplate(template).then((pv) => {
         createView(pv);
         cd.detectChanges();
@@ -73,7 +67,7 @@ export function main() {
   selector: 'test-cmp',
   template: new TemplateConfig({
     inline: '',  // each test swaps with a custom template.
-    directives: [NgNonBindable, TestDecorator]
+    directives: [NonBindable, TestDecorator]
   })
 })
 class TestComponent {
diff --git a/modules/angular2/test/directives/ng_switch_spec.js b/modules/angular2/test/directives/switch_spec.js
similarity index 73%
rename from modules/angular2/test/directives/ng_switch_spec.js
rename to modules/angular2/test/directives/switch_spec.js
index a84a088921..56be4d2b38 100644
--- a/modules/angular2/test/directives/ng_switch_spec.js
+++ b/modules/angular2/test/directives/switch_spec.js
@@ -7,20 +7,14 @@ import {DirectiveMetadataReader} from 'angular2/src/core/compiler/directive_meta
 import {NativeShadowDomStrategy} from 'angular2/src/core/compiler/shadow_dom_strategy';
 import {Component} from 'angular2/src/core/annotations/annotations';
 import {TemplateConfig} from 'angular2/src/core/annotations/template_config';
-import {NgSwitch, NgSwitchWhen, NgSwitchDefault} from 'angular2/src/directives/ng_switch';
+import {Switch, SwitchWhen, SwitchDefault} from 'angular2/src/directives/switch';
 
 export function main() {
-  describe('ng-switch', () => {
+  describe('switch', () => {
     var view, cd, compiler, component;
     beforeEach(() => {
-      compiler = new Compiler(
-        dynamicChangeDetection,
-        null,
-        new DirectiveMetadataReader(),
-        new Parser(new Lexer()),
-        new CompilerCache(),
-        new NativeShadowDomStrategy()
-      );
+      compiler = new Compiler(dynamicChangeDetection, null, new DirectiveMetadataReader(),
+        new Parser(new Lexer()), new CompilerCache(), new NativeShadowDomStrategy());
     });
 
     function createView(pv) {
@@ -37,9 +31,9 @@ export function main() {
     describe('switch value changes', () => {
       it('should switch amongst when values', (done) => {
         var template = '<div>' +
-          '<ul [ng-switch]="switchValue">' +
-            '<template [ng-switch-when]="\'a\'"><li>when a</li></template>' +
-            '<template [ng-switch-when]="\'b\'"><li>when b</li></template>' +
+          '<ul [switch]="switchValue">' +
+            '<template [switch-when]="\'a\'"><li>when a</li></template>' +
+            '<template [switch-when]="\'b\'"><li>when b</li></template>' +
           '</ul></div>';
         compileWithTemplate(template).then((pv) => {
           createView(pv);
@@ -60,9 +54,9 @@ export function main() {
 
       it('should switch amongst when values with fallback to default', (done) => {
         var template = '<div>' +
-          '<ul [ng-switch]="switchValue">' +
-            '<li template="ng-switch-when \'a\'">when a</li>' +
-            '<li template="ng-switch-default">when default</li>' +
+          '<ul [switch]="switchValue">' +
+            '<li template="switch-when \'a\'">when a</li>' +
+            '<li template="switch-default">when default</li>' +
           '</ul></div>';
         compileWithTemplate(template).then((pv) => {
           createView(pv);
@@ -83,13 +77,13 @@ export function main() {
 
       it('should support multiple whens with the same value', (done) => {
         var template = '<div>' +
-          '<ul [ng-switch]="switchValue">' +
-            '<template [ng-switch-when]="\'a\'"><li>when a1;</li></template>' +
-            '<template [ng-switch-when]="\'b\'"><li>when b1;</li></template>' +
-            '<template [ng-switch-when]="\'a\'"><li>when a2;</li></template>' +
-            '<template [ng-switch-when]="\'b\'"><li>when b2;</li></template>' +
-            '<template [ng-switch-default]><li>when default1;</li></template>' +
-            '<template [ng-switch-default]><li>when default2;</li></template>' +
+          '<ul [switch]="switchValue">' +
+            '<template [switch-when]="\'a\'"><li>when a1;</li></template>' +
+            '<template [switch-when]="\'b\'"><li>when b1;</li></template>' +
+            '<template [switch-when]="\'a\'"><li>when a2;</li></template>' +
+            '<template [switch-when]="\'b\'"><li>when b2;</li></template>' +
+            '<template [switch-default]><li>when default1;</li></template>' +
+            '<template [switch-default]><li>when default2;</li></template>' +
           '</ul></div>';
         compileWithTemplate(template).then((pv) => {
           createView(pv);
@@ -112,10 +106,10 @@ export function main() {
     describe('when values changes', () => {
       it('should switch amongst when values', (done) => {
         var template = '<div>' +
-          '<ul [ng-switch]="switchValue">' +
-            '<template [ng-switch-when]="when1"><li>when 1;</li></template>' +
-            '<template [ng-switch-when]="when2"><li>when 2;</li></template>' +
-            '<template [ng-switch-default]><li>when default;</li></template>' +
+          '<ul [switch]="switchValue">' +
+            '<template [switch-when]="when1"><li>when 1;</li></template>' +
+            '<template [switch-when]="when2"><li>when 2;</li></template>' +
+            '<template [switch-default]><li>when default;</li></template>' +
           '</ul></div>';
         compileWithTemplate(template).then((pv) => {
           createView(pv);
@@ -153,7 +147,7 @@ export function main() {
   selector: 'test-cmp',
   template: new TemplateConfig({
     inline: '',  // each test swaps with a custom template.
-    directives: [NgSwitch, NgSwitchWhen, NgSwitchDefault]
+    directives: [Switch, SwitchWhen, SwitchDefault]
   })
 })
 class TestComponent {
diff --git a/modules/benchmarks/src/naive_infinite_scroll/app.js b/modules/benchmarks/src/naive_infinite_scroll/app.js
index 67aacdd45c..5c17991a8f 100644
--- a/modules/benchmarks/src/naive_infinite_scroll/app.js
+++ b/modules/benchmarks/src/naive_infinite_scroll/app.js
@@ -6,7 +6,7 @@ import {bootstrap, Component, Template, TemplateConfig, ViewPort, Compiler}
 import {PromiseWrapper} from 'angular2/src/facade/async';
 import {ListWrapper} from 'angular2/src/facade/collection';
 import {ScrollAreaComponent} from './scroll_area';
-import {NgIf, NgRepeat} from 'angular2/directives';
+import {If, Foreach} from 'angular2/directives';
 import {DOM, document, Element} from 'angular2/src/facade/dom';
 
 export class App {
@@ -86,7 +86,7 @@ export function setupReflectorForApp() {
       new Component({
         selector: 'scroll-app',
         template: new TemplateConfig({
-          directives: [ScrollAreaComponent, NgIf, NgRepeat],
+          directives: [ScrollAreaComponent, If, Foreach],
           inline: `
             <div>
               <div style="display: flex">
@@ -96,9 +96,9 @@ export function setupReflectorForApp() {
                   <button id="reset-btn">Reset</button>
                 </div>
               </div>
-              <div template="ng-if scrollAreas.length > 0">
+              <div template="if scrollAreas.length > 0">
                 <p>Following tables are only here to add weight to the UI:</p>
-                <scroll-area template="ng-repeat #scrollArea in scrollAreas"></scroll-area>
+                <scroll-area template="foreach #scrollArea in scrollAreas"></scroll-area>
               </div>
             </div>`
         })
diff --git a/modules/benchmarks/src/naive_infinite_scroll/cells.js b/modules/benchmarks/src/naive_infinite_scroll/cells.js
index 6fcd51a478..805d0045e0 100644
--- a/modules/benchmarks/src/naive_infinite_scroll/cells.js
+++ b/modules/benchmarks/src/naive_infinite_scroll/cells.js
@@ -7,7 +7,7 @@ import {PromiseWrapper} from 'angular2/src/facade/async';
 import {ListWrapper, MapWrapper} from 'angular2/src/facade/collection';
 import {Company, Opportunity, Offering, Account, CustomDate, STATUS_LIST}
     from './common';
-import {NgRepeat} from 'angular2/directives';
+import {Foreach} from 'angular2/directives';
 
 export class HasStyle {
   style:Map;
@@ -158,10 +158,10 @@ export function setupReflectorForCells() {
       new Component({
         selector: 'stage-buttons',
         template: new TemplateConfig({
-            directives: [NgRepeat],
+            directives: [Foreach],
             inline: `
               <div [style]="style">
-                  <button template="ng-repeat #stage in stages"
+                  <button template="foreach #stage in stages"
                           [disabled]="stage.isDisabled"
                           [style]="stage.style"
                           on-click="setStage(stage)">
diff --git a/modules/benchmarks/src/naive_infinite_scroll/index.js b/modules/benchmarks/src/naive_infinite_scroll/index.js
index aa0c75fd27..c0e613aaac 100644
--- a/modules/benchmarks/src/naive_infinite_scroll/index.js
+++ b/modules/benchmarks/src/naive_infinite_scroll/index.js
@@ -15,7 +15,7 @@ import {LifeCycle} from 'angular2/src/core/life_cycle/life_cycle';
 import {XHR} from 'angular2/src/core/compiler/xhr/xhr';
 import {XHRImpl} from 'angular2/src/core/compiler/xhr/xhr_impl';
 
-import {NgIf, NgRepeat} from 'angular2/directives';
+import {If, Foreach} from 'angular2/directives';
 import {App, setupReflectorForApp} from './app';
 import {ScrollAreaComponent, setupReflectorForScrollArea} from './scroll_area';
 import {ScrollItemComponent, setupReflectorForScrollItem} from './scroll_item';
@@ -149,22 +149,22 @@ export function setupReflector() {
 }
 
 export function setupReflectorForAngular() {
-  reflector.registerType(NgIf, {
-    'factory': (vp) => new NgIf(vp),
+  reflector.registerType(If, {
+    'factory': (vp) => new If(vp),
     'parameters': [[ViewPort]],
     'annotations' : [new Template({
-      selector: '[ng-if]',
+      selector: '[if]',
       bind: {
-        'ng-if': 'condition'
+        'if': 'condition'
       }
     })]
   });
 
-  reflector.registerType(NgRepeat, {
-    'factory': (vp) => new NgRepeat(vp),
+  reflector.registerType(Foreach, {
+    'factory': (vp) => new Foreach(vp),
     'parameters': [[ViewPort]],
     'annotations' : [new Template({
-      selector: '[ng-repeat]',
+      selector: '[foreach]',
       bind: {
         'in': 'iterable[]'
       }
diff --git a/modules/benchmarks/src/naive_infinite_scroll/scroll_area.js b/modules/benchmarks/src/naive_infinite_scroll/scroll_area.js
index 7f18407db5..7b42930d31 100644
--- a/modules/benchmarks/src/naive_infinite_scroll/scroll_area.js
+++ b/modules/benchmarks/src/naive_infinite_scroll/scroll_area.js
@@ -12,7 +12,7 @@ import {Offering, ITEMS, ITEM_HEIGHT, VISIBLE_ITEMS, VIEW_PORT_HEIGHT,
     ROW_WIDTH, HEIGHT} from './common';
 import {generateOfferings} from './random_data';
 import {ScrollItemComponent} from './scroll_item';
-import {NgRepeat} from 'angular2/directives';
+import {Foreach} from 'angular2/directives';
 
 export class ScrollAreaComponent {
   _fullList:List<Offering>;
@@ -68,7 +68,7 @@ export function setupReflectorForScrollArea() {
       new Component({
         selector: 'scroll-area',
         template: new TemplateConfig({
-            directives: [ScrollItemComponent, NgRepeat],
+            directives: [ScrollItemComponent, Foreach],
             inline: `
               <div>
                   <div id="scrollDiv"
@@ -77,7 +77,7 @@ export function setupReflectorForScrollArea() {
                       <div id="padding"></div>
                       <div id="inner">
                           <scroll-item
-                              template="ng-repeat #item in visibleItems"
+                              template="foreach #item in visibleItems"
                               [offering]="item">
                           </scroll-item>
                       </div>
diff --git a/tools/transpiler/src/outputgeneration/DartParseTreeWriter.js b/tools/transpiler/src/outputgeneration/DartParseTreeWriter.js
index d2a8a8cfde..936aaa6b11 100644
--- a/tools/transpiler/src/outputgeneration/DartParseTreeWriter.js
+++ b/tools/transpiler/src/outputgeneration/DartParseTreeWriter.js
@@ -492,7 +492,7 @@ export class DartParseTreeWriter extends JavaScriptParseTreeWriter {
   }
 
   toString() {
-    return "library " + this.libName + ";\n" + super.toString();
+    return "library " + this.libName + "_dart;\n" + super.toString();
   }
 }
 
diff --git a/tools/transpiler/unittest/transpilertests.js b/tools/transpiler/unittest/transpilertests.js
index d8b8a972ec..42af136038 100644
--- a/tools/transpiler/unittest/transpilertests.js
+++ b/tools/transpiler/unittest/transpilertests.js
@@ -20,7 +20,7 @@ describe('transpile to dart', function(){
         "var s1:string = \"${a}\";" +
         "var s2:string = '\\${a}';" +
         "var s3:string = '$a';");
-      expect(result.js).toBe("library test;\n" +
+      expect(result.js).toBe("library test_dart;\n" +
       "num a = 1;\n" +
       "String s1 = \"\\${a}\";\n" +
       "String s2 = '\\${a}';\n" +
@@ -32,7 +32,7 @@ describe('transpile to dart', function(){
         "var a:number = 1;" +
         "var s1:string = `$a`;" +
         "var s2:string = `\\$a`;");
-      expect(result.js).toBe("library test;\n" +
+      expect(result.js).toBe("library test_dart;\n" +
       "num a = 1;\n" +
       "String s1 = '''\\$a''';\n" +
       "String s2 = '''\\$a''';\n");
@@ -42,7 +42,7 @@ describe('transpile to dart', function(){
       var result = compiler.compile(OPTIONS, "test.js",
         "var a:number = 1;" +
         "var s1:string = `${a}`;");
-      expect(result.js).toBe("library test;\n" +
+      expect(result.js).toBe("library test_dart;\n" +
       "num a = 1;\n" +
       "String s1 = '''${a}''';\n");
     });