     
     // MARK: On options
     
-    func onFlag(flag: String, block: OptionsFlagBlock?, usage: String = "") { // TODO: Add final modifier once possible
+    final func onFlag(flag: String, block: OptionsFlagBlock?, usage: String = "") {
         self.onFlags([flag], block: block, usage: usage)
     }
     
-    func onFlags(flags: [String], block: OptionsFlagBlock?, usage: String = "") { // TODO: Add final modifier once possible
+    final func onFlags(flags: [String], block: OptionsFlagBlock?, usage: String = "") {
         let comps = ", ".join(flags)
         let padded = self.padString(usage, toLength: 40, firstComponent: comps)
         self.usageStatements.append("\(comps)\(padded)")

    
    // MARK: - Options
    
    func optionsAccountedFor() -> Bool { // TODO: Add final modifier once possible
        self.handleOptions()
        
        if self.showHelpOnHFlag() {

        self.options.onFlags(flags, block: block)
    }
    
    final func onKey(key: String, block: OptionsKeyBlock?, usage: String = "", valueSignature: String = "value") {
        self.onKeys([key], block: block, usage: usage, valueSignature: valueSignature)
    }
    
    final func onKeys(keys: [String], block: OptionsKeyBlock?, usage: String = "", valueSignature: String = "value") {
        let comps = ", ".join(keys)
        let firstPart = "\(comps) <\(valueSignature)>"
        let padded = self.padString(usage, toLength: 40, firstComponent: firstPart)
