     }
 }
 
-// MARK: - Operations
-
+/**
+
+ # Get Authorization Status Operation
+
+ This is a generic operation which will get the current authorization
+ status for any CapabilityType.
+
+*/
 public class GetAuthorizationStatus<Capability: CapabilityType>: Operation {
 
+    /// the StatusResponse is a tuple for the capabilities availability and status
     public typealias StatusResponse = (Bool, Capability.Status)
+
+    /// the Completion is a closure which receives a StatusResponse
     public typealias Completion = StatusResponse -> Void
 
+    /**
+     After the operation has executed, this property will be set
+     either true or false.
+     
+     - returns: a Bool indicating whether or not the capability is available.
+    */
     public var isAvailable: Bool? = .None
+
+    /**
+     After the operation has executed, this property will be set
+     to the current status of the capability.
+
+     - returns: a StatusResponse of the current status.
+     */
     public var status: Capability.Status? = .None
 
     let capability: Capability
     let completion: Completion
 
+    /**
+     Initialize the operation with a CapabilityType and completion. A default
+     completion is set which does nothing. The status is also available using
+     properties.
+     
+     - parameter capability: the Capability.
+     - parameter completion: the Completion closure.
+    */
     public init(_ capability: Capability, completion: Completion = { _ in }) {
         self.capability = capability
         self.completion = completion

    }
}

public class Authorize<Capability: CapabilityType>: GetAuthorizationStatus<Capability> {

    public override init(_ capability: Capability, completion: Completion = { _ in }) {
        super.init(capability, completion: completion)
        name = "Authorize \(capability.name).\(capability.requirement)"
        addCondition(MutuallyExclusive<Capability>())
    }

    public override func execute() {
        capability.requestAuthorizationWithCompletion {
            super.execute()


extension Capability.VoidStatus: Equatable { }

/// Equality check for Capability.VoidStatus
public func ==(a: Capability.VoidStatus, b: Capability.VoidStatus) -> Bool {
    return true
}
