     return result
   }
 
+  /**
+   - Returns: A key-value dictionary.
+   */
   public func properties() -> [String : Any] {
     var properties = [String : Any]()
 

    return objectValue
  }

  public func property<T>(key: String, dictionary: T? = nil) -> T? {
    // TODO: Improve this to support nested attributes
    let components = key.split(".")


public extension Mappable {

  /**
   - Parameter key: The key name of the property you want to lookup
   - Returns: A generic value on success, otherwise it throws a MappableError.
   */
  public func value<T>(key: String) throws -> T {
    let value = Mirror(reflecting: self)
      .children
