     return
   }
   
-  // If you want to do it the hard way
+  /**
+  Creates an Inline Keyboard using a series of specified `MarkupInlineKey` types, where all buttons will 
+	be arranged on a single row.
+	- parameter buttonsIn: The buttons to be included in the keyboard.
+  */
   public init(withButtons buttonsIn: MarkupInlineKey...) {
     let row = MarkupInlineRow()
     for button in buttonsIn {
       row.addButton(button)
     }
-    keyboard.append(row)
-  }
-  
-  // A quick type for generating buttons.
+		keyboard.append(row)
+  }
+  
+	/**
+	Creates an Inline Keyboard using a series of specified button label and URL string pairs, where all buttons will
+	be arranged on a single row.
+	- parameter pair: A sequence of label/url String tuples that will define each key on the keyboard.
+	*/
   public init(withURL pair: (label: String, url: String)...) {
     let row = MarkupInlineRow()
     for label in pair {

}


// A single inline button definition
public class MarkupInlineKey: NodeConvertible, JSONConvertible {
  public var text: String // Label text
  public var data: String
  public var type: InlineButtonType
  
  //public var optional: InlineButtonOptional
  
  
  public init(fromURL url: String, label: String) {
    self.text = label
    self.data = url
    self.type = .url
    //optional = .url(url)
  }
  
  public init(fromCallbackData callback: String, label: String) {
    self.text = label
    self.data = callback
    self.type = .callbackData
    //optional = .callbackData(callback)
  }
  
  public init(fromInlineQueryCurrent data: String, label: String) {
    self.text = label
    self.data = data
    self.type = .switchInlineQuery_currentChat
    //optional = .switchInlineQuery_currentChat(data)
  }
  
  // Internally used to compare two keys
  func compare(key: MarkupInlineKey) -> Bool {
    if text != key.text { return false }
    
    if key.type != self.type { return false }

    }
    
  }

  
  
  /**
	Returns all available callback data from any button held inside this markup
	*/
  public func getCallbackData() -> [String]? {
    var data: [String] = []
    for row in keyboard {
