     
     var isAuthorizedForEventsAccess: Bool { get }
 
-    func requestAccessToEvents()
+    func requestAccessToEvents(completionHandler: (Bool) -> Void)
+    func makeEvent() -> CalendarEvent
+    func save(event: CalendarEvent)
 
+}
+
+protocol CalendarEvent {
+    
 }
 
 class CapturingCalendarPort: CalendarPort {

        get {
            return true
        }
    }
    
}

    }

    private(set) var wasAskedForEventsPermissions = false
    func requestAccessToEvents(completionHandler: (Bool) -> Void) {
        wasAskedForEventsPermissions = true
    }
    
    private(set) var didMakeEvent = false
    var createdEvent: CalendarEvent = StubCalendarEvent()
    func makeEvent() -> CalendarEvent {
        didMakeEvent = true
        return createdEvent
    }
    
    private(set) var savedEvent: CalendarEvent?
    func save(event: CalendarEvent) {
        savedEvent = event
    }

}

class StubCalendarEvent: CalendarEvent {
    
}

class AuthorizedCalendarPort: CapturingCalendarPort {
