       wall : new shapeConfig(1, 1, 0, 0.8)
       floor : new shapeConfig(1, 1, 0, 0.8)
       ceil : new shapeConfig(1, 1, 0, 0.8)
-      box: [
-        new shapeConfig(1, 1, 0, 0.8)
+      shoot: new shapeConfig(0.5, 1, 0, 0.8)
+      shape: [
+        [
+          new shapeConfig(1, 1, 0.5, 0.8)
+          new shapeConfig(1, 1, 0.5, 0.8)
+          new shapeConfig(1, 1, 0.5, 0.8)
+          new shapeConfig(1, 1, 0.5, 0.8)
+          new shapeConfig(1, 1, 0.5, 0.8)
+        ]
+        [
+          new shapeConfig(1, 1, 0.5, 0.8)
+          new shapeConfig(1, 1, 0.5, 0.8)
+          new shapeConfig(1, 1, 0.5, 0.8)
+          new shapeConfig(1, 1, 0.5, 0.8)
+          new shapeConfig(1, 1, 0.5, 0.8)
+        ]
+        [
+          new shapeConfig(1, 1, 0.5, 0.8)
+          new shapeConfig(1, 1, 0.5, 0.8)
+          new shapeConfig(1, 1, 0.5, 0.8)
+          new shapeConfig(1, 1, 0.5, 0.8)
+          new shapeConfig(1, 1, 0.5, 0.8)
+        ]
       ]
     }
   }
   field: {
     world: new b2World(new b2Vec2(0, 9.8), true)
-    addShape: (type, size, color, speed, position) ->
+    addShape: (type, size, angle, color, speed, position) ->
       fixtureConfig = window.iris.config.fixture
-      config = fixtureConfig.box[size]
+      config = fixtureConfig.shape[type][size]
       fixture = config.getFixtureDef()
 
       switch type
         when 0
+          # box
           fixture.shape = new b2PolygonShape
           fixture.shape.SetAsBox(config.size,config.size)
         when 1
+          # triangle
           v = [
             new b2Vec2(-config.size,-config.size)
+            new b2Vec2( config.size, config.size)
             new b2Vec2(-config.size, config.size)
-            new b2Vec2( config.size, config.size)
           ]
           fixture.shape = new b2PolygonShape
-          fixture.shape.SetAsArray(v)
+          fixture.shape.SetAsArray(v,3)
         when 2
+          # circle
           fixture.shape = new b2CircleShape
           fixture.shape.SetRadius(config.size)
       
       body = new b2BodyDef
-      body.angle = 0.2
-      body.type = b2Body.b2_dynamicBody
+      body.angle = angle
+      body.type = b2Body.b2_kinematicBody
+      body.userData = {type: "shape", data: undefined} # TODO
       body.position.Set(position*20 + 2, 5) # x: 2-22
       @world.CreateBody(body).CreateFixture(fixture)
+    shoot: (x, y, vel) ->
+      fixtureConfig = window.iris.config.fixture
+      config = fixtureConfig.shoot
+      fixture = config.getFixtureDef()
+
+      fixture.shape = new b2PolygonShape
+      fixture.shape.SetAsBox(config.size,config.size)
+      
+      body = new b2BodyDef
+      body.type = b2Body.b2_dynamicBody
+      body.userData = {type: "shoot", data: undefined} # TODO
+      body.position.Set(x, y)
+      b = @world.CreateBody(body)
+      b.CreateFixture(fixture)
+      b.SetLinearVelocity(new b2Vec2(0,-vel))
 
     init: ->
       fixtureConfig = window.iris.config.fixture

    debugDraw.SetFlags b2DebugDraw.e_shapeBit | b2DebugDraw.e_jointBit
    @field.world.SetDebugDraw debugDraw
    @field.init()
    console.log "Iris ready"
    window.setInterval(update, 1000/30)

  update : ->
    @field.world.Step(1/30, 10, 10)
    @field.world.DrawDebugData()
    # grid
    @s.lineWidth = 1

      floorFixture.shape.SetAsBox(10,0.5)
      floorBody = new b2BodyDef
      floorBody.type = b2Body.b2_staticBody
      floorBody.userData = {type: "floor"}
      floorBody.position.Set(12,25.5)
      @world.CreateBody(floorBody).CreateFixture(floorFixture)

