             CGContextStrokePath(context)
             
         case .Rect:
-            CGContextAddRect(context,  currentRect)
+            CGContextAddRect(context,  currentRect())
             CGContextDrawPath(context, kCGPathFillStroke)
             
         case .Ellipse:
-            CGContextAddEllipseInRect(context, currentRect)
+            CGContextAddEllipseInRect(context, currentRect())
             CGContextDrawPath(context, kCGPathFillStroke)
             
         case .Image:

    var shape = Shape.Line
    var currentColor = UIColor.redColor()
    var useRandomColor = false
    
    // Internal properties
    private let image = UIImage(named:"iphone")!

        setNeedsDisplay()
    }
    
    func currentRect() -> CGRect {
        return CGRectMake(firstTouchLocation.x,
            firstTouchLocation.y,
            lastTouchLocation.x - firstTouchLocation.x,
            lastTouchLocation.y - firstTouchLocation.y)
    }
    
    override func drawRect(rect: CGRect) {
        let context = UIGraphicsGetCurrentContext()
        CGContextSetLineWidth(context, 2.0)
        CGContextSetStrokeColorWithColor(context, currentColor.CGColor)
        CGContextSetFillColorWithColor(context, currentColor.CGColor)
        
        switch shape {
        case .Line:
