         }
     }
 
-    var subviewsToShow: [PolarCoordinated] {
+    var polarCoordinatedSubviews: [PolarCoordinated] = []
+
+    private var subviewsToShow: [PolarCoordinated] {
         let lower = self.contentOffset
         let upper = self.contentOffset + M_PI * 2
         return self.polarCoordinatedSubviews.filter { (p) -> Bool in

    }

    private var contentView: PolarView
    var contentOffset: Double {
        get {
            return -1 * self.offset

        }
    }

    private var formerTouchPoint: CGPoint!

    func addSubview(polarCoordinated view: PolarCoordinated) {
        if !self.polarCoordinatedSubviews.contains(view) {
            self.polarCoordinatedSubviews.append(view)
        }

        self.setNeedsLayout()
    }

    func dragging(recognizer: UIPanGestureRecognizer) {
        switch recognizer.state {
        case .Began:
            self.formerTouchPoint = recognizer.locationInView(self)
        case .Changed:
            let v1 = self.formerTouchPoint - self.center
            let v2 = recognizer.locationInView(self) - self.center
            self.contentOffset += getAngle(a: v2, b: v1)
            self.formerTouchPoint = recognizer.locationInView(self)
        case .Ended:
            self.formerTouchPoint = nil
        case .Cancelled:
            self.formerTouchPoint = nil
        default:
            break
        }
    }

    // MARK: UIView methods

    override func addSubview(view: UIView) { }

    override func layoutSubviews() {
        self.contentView.frame.size = self.frame.size

        for subview in self.subviewsToShow {
            self.contentView.addSubview(subview)
        }

        for subview in self.contentView.subviews {
            if let polar = subview as? PolarCoordinated where !self.subviewsToShow.contains(polar){
                polar.removeFromSuperview()
            }
        }

        super.layoutSubviews()
    }

