             case .LineByMovingByX(let x, let y):
                 let targetPoint = CGContextGetPathCurrentPoint(context).pointOffsetByX(x * xScale, y: y * yScale)
                 CGContextAddLineToPoint(context, targetPoint.x, targetPoint.y)
+            case .RectWithWidth(let width, let height, let fill):
+                let rect = CGRect(
+                    origin: CGContextGetPathCurrentPoint(context),
+                    size: CGSize(width: width * xScale, height: height * yScale)
+                )
+                
+                CGContextAddRect(context, rect)
+                
+                if fill {
+                    rectsToFill.append(rect)
+                }
             case .Close:
                 CGContextAddLineToPoint(context, self.originPoint.x * xScale, self.originPoint.y * yScale)
             }
         }
         
-        CGContextSetStrokeColorWithColor(context, self.strokeColor.CGColor)
         CGContextSetLineWidth(context, self.lineWidth)
         CGContextStrokePath(context)
+        CGContextFillRects(context, rectsToFill, rectsToFill.count)
         
         return CGBitmapContextCreateImage(context)
     }

    
    private var drawingOperations: [ShapeDrawingOperation]
    
    /// Create a new instance of Shape, it won't have a stroke color and a 1 line width
    public init() {
        self.strokeColor = SKColor.clearColor()
        self.lineWidth = 1
        self.size = CGSize()
        self.originPoint = CGPoint()

    case MoveTo(CGPoint)
    case LineTo(CGPoint)
    case LineByMovingByX(CGFloat, y: CGFloat)
    case RectWithWidth(CGFloat, height: CGFloat, fill: Bool)
    case Close
}

