         addTargets()
     }
 
-    public required init?(coder aDecoder: NSCoder) {
-        super.init(coder: aDecoder)
+    public required init(coder aDecoder: NSCoder) {
+        super.init(coder: aDecoder)!
         createLayers(image: UIImage())
         addTargets()
     }

    private func createLayers(image image: UIImage!) {
        self.layer.sublayers = nil

        let imageFrame = CGRect(x: frame.size.width / 2 - image.size.width / 2, y: frame.size.height / 2 - image.size.height / 2, width: image.size.width, height: image.size.height)
        let imgCenterPoint = CGPointMake(CGRectGetMidX(imageFrame), CGRectGetMidY(imageFrame))
        let lineFrame = CGRectMake(imageFrame.origin.x - imageFrame.width / 4, imageFrame.origin.y - imageFrame.height / 4 , imageFrame.width * 1.5, imageFrame.height * 1.5)
        
//        let imageFrame = CGRectMake(frame.size.width / 2 - frame.size.width / 4, frame.size.height / 2 - frame.size.height / 4, frame.size.width / 2, frame.size.height / 2)

        //===============
        // circle layer

    }

    public func select() {
        selected = true
        imageShape.fillColor = imageColorOn.CGColor

        CATransaction.begin()

        circleShape.addAnimation(circleTransform, forKey: "transform")
        circleMask.addAnimation(circleMaskTransform, forKey: "transform")
        imageShape.addAnimation(imageTransform, forKey: "transform")

        for i in 0 ..< 5 {
            lines[i].addAnimation(lineStrokeStart, forKey: "strokeStart")
            lines[i].addAnimation(lineStrokeEnd, forKey: "strokeEnd")
            lines[i].addAnimation(lineOpacity, forKey: "opacity")
        }

        CATransaction.commit()
    }

    public func deselect() {
