 
 import UIKit
 
+// MARK: Properties & Initializers
+
 internal final class GCCalendarMonthView: UIStackView, UIGestureRecognizerDelegate
 {
-    // MARK: - Properties
+    // MARK: Properties
+    
+    private let viewController: GCCalendarViewController!
     
     internal var startDate: NSDate!
-    
-    private weak var viewController: GCCalendarViewController!
     
     private var weekViews: [GCCalendarWeekView] = []
     private var panGestureRecognizer: UIPanGestureRecognizer!
     
-    // MARK: - Initializers
-    
-    internal convenience init(viewController: GCCalendarViewController, startDate: NSDate)
-    {
-        self.init(frame: CGRectZero)
+    internal var containsToday: Bool {
         
-        self.viewController = viewController
-        self.startDate = startDate
-        
-        self.axis = .Vertical
-        self.distribution = .FillEqually
-        
-        self.translatesAutoresizingMaskIntoConstraints = false
-        
-        self.addWeekViews()
-    }
-}
-
-// MARK: - Pan Gesture Recognizer
-
-internal extension GCCalendarMonthView
-{
-    internal func addPanGestureRecognizer(target: AnyObject, action: Selector)
-    {
-        self.panGestureRecognizer = UIPanGestureRecognizer(target: target, action: action)
-        
-        self.addGestureRecognizer(self.panGestureRecognizer)
-    }
-}
-
-// MARK: - Week Views
-
-internal extension GCCalendarMonthView
-{
-    private func addWeekViews()
-    {
-        for dates in self.dates
-        {
-            let weekView = GCCalendarWeekView(viewController: self.viewController, dates: dates)
-            
-            self.addArrangedSubview(weekView)
-            self.weekViews.append(weekView)
-        }
+        return self.viewController.calendar.isDate(self.startDate, equalToDate: NSDate(), toUnitGranularity: .Month)
     }
     
     private var dates: [[NSDate?]] {

        
        weekView.setSelectedDate(weekday: selectedDateComponents.weekday)
    }
    
    internal var containsToday: Bool {
        
        return self.viewController.calendar.isDate(self.startDate, equalToDate: NSDate(), toUnitGranularity: .Month)
    }
}

            self.weekViews[index].update(newDates: dates)
        }
    }
    
    // MARK: Selected Date
    
    internal func setSelectedDate()
    {
