     }
 }
 
+/**
+ The Events capability, generic over an EventsCapabilityRegistrarType. 
+ 
+ Framework consumers should not use this directly, but instead 
+ use Capability.Calendar. So that its usage is like this:
+ 
+ ```swift
+ 
+ GetAuthorizationStatus(Capability.Calendar()) { status in
+    // check the status etc.
+ }
+ ```
+ 
+ - see: Capability.Calendar
+*/
 public class _EventsCapability<Registrar: EventsCapabilityRegistrarType>: NSObject, CapabilityType {
 
+    /// - returns: a String, the name of the capability
     public let name: String
+
+    /// - returns: a EKEntityType, the required type of the capability
     public let requirement: EKEntityType
 
     let registrar: Registrar
 
+    /**
+     Initialize the capability. By default, it requires access to .Event.
+
+     - parameter requirement: the required EKEntityType, defaults to .Event
+     - parameter registrar: the registrar to use. Defauls to creating a Registrar.
+    */
     public required init(_ requirement: EKEntityType = .Event, registrar: Registrar = Registrar()) {
         self.name = "Events"
         self.requirement = requirement


extension EKAuthorizationStatus: AuthorizationStatusType {

    public func isRequirementMet(requirement: EKEntityType) -> Bool {
        if case .Authorized = self {
            return true

        super.init()
    }

    /// - returns: true, EventKit is always available
    public func isAvailable() -> Bool {
        return true
    }

    /**
     Get the current authorization status of EventKit from the Registrar.
     - parameter completion: a Status -> Void closure.
     */
    public func authorizationStatus(completion: EKAuthorizationStatus -> Void) {
        completion(registrar.opr_authorizationStatusForRequirement(requirement))
    }

    /**
     Request authorization to EventKit from the Registrar.
     - parameter completion: a dispatch_block_t
     */
    public func requestAuthorizationWithCompletion(completion: dispatch_block_t) {
        let status = registrar.opr_authorizationStatusForRequirement(requirement)
        switch status {
