             )
         }
     }
-    
+
+    func append(element: A) -> FingerTree<A> {
+        switch self {
+        case .Empty:
+            return Single(element)
+        case .Single(let a):
+            return Deep(
+                prefix: Affix.One(a),
+                deeper: FingerTree<ActualAny>.Empty.pointer,
+                suffix: Affix.One(element)
+            )
+        case .Deep(let prefix, let deeper, .Four(let a, let b, let c, let d)):
+            return Deep(
+                prefix: prefix,
+                deeper: deeper.tree.append(*Node.Branch3(a, b, c)).pointer,
+                suffix: Affix.Two(d, element)
+            )
+        case .Deep(let prefix, let deeper, let suffix):
+            return .Deep(
+                prefix: prefix,
+                deeper: deeper,
+                suffix: suffix.append(element)!
+            )
+        }
+    }
+
     var toArray: [A] {
         switch self {
         case .Empty:

            ])
        }
    }
    
    var description: String {
        return "\(self.toArray)"
    }

        joinedArray += array
    }
    return joinedArray
}