diff --git a/packages/ember-htmlbars/lib/keywords/collection.js b/packages/ember-htmlbars/lib/keywords/collection.js
index f8ec2980099..92bd45d404d 100644
--- a/packages/ember-htmlbars/lib/keywords/collection.js
+++ b/packages/ember-htmlbars/lib/keywords/collection.js
@@ -1,6 +1,6 @@
/**
@module ember
-@submodule ember-htmlbars
+@submodule ember-templates
*/
import { readViewFactory } from 'ember-views/streams/utils';
@@ -8,6 +8,130 @@ import CollectionView from 'ember-views/views/collection_view';
import ViewNodeManager from 'ember-htmlbars/node-managers/view-node-manager';
import { assign } from 'ember-metal/merge';
+/**
+ `{{collection}}` is a template helper for adding instances of
+ `Ember.CollectionView` to a template. See [Ember.CollectionView](/api/classes/Ember.CollectionView.html)
+ for additional information on how a `CollectionView` functions.
+
+ `{{collection}}`'s primary use is as a block helper with a `contentBinding`
+ option pointing towards an `Ember.Array`-compatible object. An `Ember.View`
+ instance will be created for each item in its `content` property. Each view
+ will have its own `content` property set to the appropriate item in the
+ collection.
+
+ The provided block will be applied as the template for each item's view.
+
+ Given an empty `
` the following template:
+
+ ```handlebars
+ {{! application.hbs }}
+ {{#collection content=model}}
+ Hi {{view.content.name}}
+ {{/collection}}
+ ```
+
+ And the following application code
+
+ ```javascript
+ App = Ember.Application.create();
+ App.ApplicationRoute = Ember.Route.extend({
+ model: function() {
+ return [{name: 'Yehuda'},{name: 'Tom'},{name: 'Peter'}];
+ }
+ });
+ ```
+
+ The following HTML will result:
+
+ ```html
+
+
Hi Yehuda
+
Hi Tom
+
Hi Peter
+
+ ```
+
+ ### Non-block version of collection
+
+ If you provide an `itemViewClass` option that has its own `template` you may
+ omit the block.
+
+ The following template:
+
+ ```handlebars
+ {{! application.hbs }}
+ {{collection content=model itemViewClass="an-item"}}
+ ```
+
+ And application code
+
+ ```javascript
+ App = Ember.Application.create();
+ App.ApplicationRoute = Ember.Route.extend({
+ model: function() {
+ return [{name: 'Yehuda'},{name: 'Tom'},{name: 'Peter'}];
+ }
+ });
+
+ App.AnItemView = Ember.View.extend({
+ template: Ember.Handlebars.compile("Greetings {{view.content.name}}")
+ });
+ ```
+
+ Will result in the HTML structure below
+
+ ```html
+
+
Greetings Yehuda
+
Greetings Tom
+
Greetings Peter
+
+ ```
+
+ ### Specifying a CollectionView subclass
+
+ By default the `{{collection}}` helper will create an instance of
+ `Ember.CollectionView`. You can supply a `Ember.CollectionView` subclass to
+ the helper by passing it as the first argument:
+
+ ```handlebars
+ {{#collection "my-custom-collection" content=model}}
+ Hi {{view.content.name}}
+ {{/collection}}
+ ```
+
+ This example would look for the class `App.MyCustomCollection`.
+
+ ### Forwarded `item.*`-named Options
+
+ As with the `{{view}}`, helper options passed to the `{{collection}}` will be
+ set on the resulting `Ember.CollectionView` as properties. Additionally,
+ options prefixed with `item` will be applied to the views rendered for each
+ item (note the camelcasing):
+
+ ```handlebars
+ {{#collection content=model
+ itemTagName="p"
+ itemClassNames="greeting"}}
+ Howdy {{view.content.name}}
+ {{/collection}}
+ ```
+
+ Will result in the following HTML structure:
+
+ ```html
+
+
Howdy Yehuda
+
Howdy Tom
+
Howdy Peter
+
+ ```
+
+ @method collection
+ @for Ember.Templates.helpers
+ @deprecated Use `{{each}}` helper instead.
+ @public
+*/
export default {
setupState(state, env, scope, params, hash) {
var read = env.hooks.getValue;
diff --git a/packages/ember-htmlbars/lib/keywords/partial.js b/packages/ember-htmlbars/lib/keywords/partial.js
index b2735d06bc9..d776ca68b1e 100644
--- a/packages/ember-htmlbars/lib/keywords/partial.js
+++ b/packages/ember-htmlbars/lib/keywords/partial.js
@@ -1,11 +1,52 @@
/**
@module ember
-@submodule ember-htmlbars
+@submodule ember-templates
*/
import lookupPartial from 'ember-views/system/lookup_partial';
import { internal } from 'htmlbars-runtime';
+/**
+ The `partial` helper renders another template without
+ changing the template context:
+
+ ```handlebars
+ {{foo}}
+ {{partial "nav"}}
+ ```
+
+ The above example template will render a template named
+ "_nav", which has the same context as the parent template
+ it's rendered into, so if the "_nav" template also referenced
+ `{{foo}}`, it would print the same thing as the `{{foo}}`
+ in the above example.
+
+ If a "_nav" template isn't found, the `partial` helper will
+ fall back to a template named "nav".
+
+ ### Bound template names
+
+ The parameter supplied to `partial` can also be a path
+ to a property containing a template name, e.g.:
+
+ ```handlebars
+ {{partial someTemplateName}}
+ ```
+
+ The above example will look up the value of `someTemplateName`
+ on the template context (e.g. a controller) and use that
+ value as the name of the template to render. If the resolved
+ value is falsy, nothing will be rendered. If `someTemplateName`
+ changes, the partial will be re-rendered using the new template
+ name.
+
+
+ @method partial
+ @for Ember.Templates.helpers
+ @param {String} partialName the name of the template to render minus the leading underscore
+ @public
+*/
+
export default {
setupState(state, env, scope, params, hash) {
return { partialName: env.hooks.getValue(params[0]) };
diff --git a/packages/ember-htmlbars/lib/keywords/readonly.js b/packages/ember-htmlbars/lib/keywords/readonly.js
index c0b8e9165e5..dd954d1114f 100644
--- a/packages/ember-htmlbars/lib/keywords/readonly.js
+++ b/packages/ember-htmlbars/lib/keywords/readonly.js
@@ -1,3 +1,8 @@
+/**
+@module ember
+@submodule ember-templates
+*/
+
import { MUTABLE_REFERENCE } from 'ember-htmlbars/keywords/mut';
export default function readonly(morph, env, scope, originalParams, hash, template, inverse) {
diff --git a/packages/ember-htmlbars/lib/keywords/textarea.js b/packages/ember-htmlbars/lib/keywords/textarea.js
index daf57bcc087..3687dedbc4c 100644
--- a/packages/ember-htmlbars/lib/keywords/textarea.js
+++ b/packages/ember-htmlbars/lib/keywords/textarea.js
@@ -1,8 +1,194 @@
/**
@module ember
-@submodule ember-htmlbars
+@submodule ember-templates
*/
+/**
+ `{{textarea}}` inserts a new instance of `