 
 // MARK: - start of and end of operations
 
-extension NSDate {
+public extension NSDate {
 
     internal func biggerUnit(unit: NSCalendarUnit) -> NSCalendarUnit? {
         switch unit {

            theseComponents.weekday = NSDateComponentUndefined
            theseComponents.weekdayOrdinal = NSDateComponentUndefined
            theseComponents.quarter = NSDateComponentUndefined
       }

        if YWDUnits.contains(unit) {
            theseComponents.year = NSDateComponentUndefined
            theseComponents.month = NSDateComponentUndefined
            theseComponents.day = NSDateComponentUndefined
            theseComponents.quarter = NSDateComponentUndefined
      }

        for thisUnit in smallerUnits(unit)! {
            let nextBiggerUnit = biggerUnit(thisUnit)!


// MARK: - Initialisations

public extension NSDate {

    internal class func defaultComponents(withCalendar calendar: NSCalendar = NSCalendar.currentCalendar()) -> NSDateComponents {
        let referenceDate = NSDate(timeIntervalSinceReferenceDate: NSTimeInterval(0))
