    - Returns: A key-value dictionary.
    */
   public func properties() -> [String : Any] {
-    var properties = [String : Any]()
+    var properties = [String: Any]()
 
     for tuple in Mirror(reflecting: self).children {
       guard let key = tuple.label else { continue }

      .map { $1 }.first

    guard let objectValue = value as? T else {
      throw MappableError.typeError(message: "Tried to get value \(value) for \(key) as \(T.self) when expecting \(types()[key])")
    }

    return objectValue

   - Returns: A string based dictionary.
   */
  public func types() -> [String : String] {
    var types = [String: String]()
    for tuple in Mirror(reflecting: self).children {
      guard let key = tuple.label else { continue }
      types[key] = "\(Mirror(reflecting: tuple.value).subjectType)"
