 	}
 	
 	/// Returns a `Stream` with the first n elements removed.
-	public func drop(n : UInt) -> Stream<T> {
+	public func drop(n : UInt) -> Stream<Element> {
 		if n == 0 {
 			return self
 		}

	}
	
	/// Returns the longest prefix of values in a `Stream` for which a predicate holds.
	public func takeWhile(p : T -> Bool) -> [T] {
		if p(self.step().head) {
			return self.step().tail.takeWhile(p).cons(self.step().head)
		}

	}
	
	/// Returns the first n elements of a `Stream`.
	public func take(n : UInt) -> [Element] {
		if n == 0 {
			return []
		}
