define('starField',

['Star', 'SpeedLine', 'vent', 'util', ],

function( Star, SpeedLine, vent, util ){

    'use strict';

    var init,
        create,
        bindEvents,
        stars = [],
        lines = [],
        canvas,
        update,
        ctx,
        cfg;


    cfg = {
        starCount: 300,
        lineCount: 8
    };


    init = function( obj ){
        canvas = obj;
        ctx = canvas.getContext('2d');
    };


    bindEvents = function(){
        vent.on('start', function( ){
            init(util.getById('bg'));
            create();
            vent.on('update', update);
        });
    };


    create = function(){
        for (var i = 0; i < cfg.starCount; i++) {
            stars.push(new Star(canvas).create());
        }
        for (i = 0; i < cfg.lineCount; i++) {
            lines.push(new SpeedLine(canvas).create());
        }
        var out = {
            render: function(){
                ctx.clearRect(0, 0, canvas.width, canvas.height);
                for (var i = 0; i < stars.length; i++) {
                    var star = stars[i];
                    util.circle(ctx,
                        star.position.x, star.position.y,
                        star.size, star.fillStyle
                    );
                }
                for (i = 0; i < lines.length; i++) {
                    var line = lines[i];
                    util.rect(ctx,
                        line.position.x, line.position.y,
                        line.size.width, line.size.height,
                        line.fillStyle
                    );
                }
            }
        };
        vent.emit('bg-item-added', out);
    };


    update = function(){
        var newY,
            line,
            star;

        for (var i = 0; i < stars.length; i++) {
            star = stars[i];
            star.physics.velocity = util.approach(
                star.physics.velocityGoal,
                star.physics.velocity,
                star.physics.friction
            );
            newY = star.position.y + star.physics.velocity;
            if ( newY > star.canvas.height + star.size ) {
                star.restart();
            } else {
                star.position.y = newY;
            }
        }

        for (i = 0; i < lines.length; i++) {
            line = lines[i];
            line.physics.velocity = util.approach(
                line.physics.velocityGoal,
                line.physics.velocity,
                line.physics.friction
            );
            newY = line.position.y + line.physics.velocity;
            if ( newY > line.canvas.height + line.size.height ) {
                line.restart();
            } else {
                line.position.y = newY;
            }
        }
    };


    bindEvents();

});

@@ -329,24 +329,147 @@
  8%0A    %7D;%0A%0A%0A
+    /**%0A     * Initialize the starField module%0A     * @param  %7BCanvas%7D obj background canvas%0A     * @return %7Bvoid%7D%0A     */%0A
     init = f
@@ -546,32 +546,121 @@
 '2d');%0A    %7D;%0A%0A%0A
+    /**%0A     * Bind event handlers to global event emitter%0A     * @return %7Bvoid%7D%0A     */%0A
     bindEvents =
@@ -826,24 +826,114 @@
 );%0A    %7D;%0A%0A%0A
+    /**%0A     * Creare all the stars and lines for the field%0A     * @return %7Bvoid%7D%0A     */%0A
     create =
@@ -1967,24 +1967,171 @@
 );%0A    %7D;%0A%0A%0A
+    /**%0A     * Bound to %60update%60 event, update all positional coordinates and velocities%0A     * for stars and lines.%0A     * @return %7Bvoid%7D%0A     */%0A
     update =

add docstrings for starField module