 	public init(_ a : A, _ t : List<A>) {
 		head = a
 		tail = t
+	}
+
+	public init(_ a : A, _ t : NonEmptyList<A>) {
+		head = a
+		tail = t.toList()
 	}
 
 	public init?(_ list : List<A>) {

extension NonEmptyList : ArrayLiteralConvertible {
	public typealias Element = A

	public init(arrayLiteral s: Element...) {
		var xs : [A] = []
		var g = s.generate()
		let h : A? = g.next()
		while let x : A = g.next() {
			xs.append(x)
		}
		var l = List<A>()
		for x in NonEmptyList(List(fromArray: xs.reverse()))! {
			l = List(x, l)
		}
		self = NonEmptyList(h!, l)
	}
}


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