 //
 
 import UIKit
+
+class Shape: UIView {
+    convenience override init() {
+        self.init(frame: CGRectZero)
+    }
+    
+    override init(frame: CGRect) {
+        super.init(frame: frame)
+        
+        self.opaque = false
+        self.setNeedsDisplay()
+    }
+
+    required init(coder aDecoder: NSCoder) {
+        fatalError("init(coder:) has not been implemented")
+    }
+}
+
+class BackspaceShape: Shape {
+    override func drawRect(rect: CGRect) {
+        drawBackspace(self.bounds, UIColor.redColor())
+    }
+}
+
+class ShiftShape: Shape {
+    var withLock: Bool = false {
+        didSet {
+            self.setNeedsDisplay()
+        }
+    }
+    
+    override func drawRect(rect: CGRect) {
+        drawShift(self.bounds, UIColor.redColor(), self.withLock)
+    }
+}
+
+class GlobeShape: Shape {
+    override func drawRect(rect: CGRect) {
+        drawGlobe(self.bounds, UIColor.redColor())
+    }
+}
 
 func drawBackspace(bounds: CGRect, color: UIColor) {
     let highestX = CGFloat(43.5)

    
    if withRect {
        //// Rectangle Drawing
        let rectanglePath = UIBezierPath(rect: CGRectMake(9.5, 34.5, 18.5, 4))
        color2.setFill()
        rectanglePath.fill()
    }
}

    //// Bezier Drawing
    var bezierPath = UIBezierPath()
    bezierPath.moveToPoint(CGPointMake(28 * xScalingFactor, 18.7 * yScalingFactor))
    bezierPath.addLineToPoint(CGPointMake(37 * xScalingFactor, 18.7 * yScalingFactor))
    bezierPath.addLineToPoint(CGPointMake(37 * xScalingFactor, 17.72 * yScalingFactor))
    bezierPath.addLineToPoint(CGPointMake(18.5 * xScalingFactor, 0 * yScalingFactor))
    bezierPath.addLineToPoint(CGPointMake(0 * xScalingFactor, 17.72 * yScalingFactor))
