 	public func duplicate() -> NonEmptyList<NonEmptyList<A>> {
 		switch NonEmptyList(self.tail) {
 		case .None:
-			return NonEmptyList<NonEmptyList<A>>(self, [])
+			return NonEmptyList<NonEmptyList<A>>(self, List())
 		case let .Some(x):
 			return NonEmptyList<NonEmptyList<A>>(self, x.duplicate().toList())
 		}

	public init(_ a : A, _ t : List<A>) {
		head = a
		tail = t
	}

	public init?(_ list : List<A>) {

extension NonEmptyList : ArrayLiteralConvertible {
	public typealias Element = A

	public init(arrayLiteral xs : Element...) {
		var l = NonEmptyList<A>(xs.first!, List())
		for x in xs[1..<xs.endIndex].reverse() {
			l = NonEmptyList(x, l)
		}
		self = l
	}
}

