class Pipe {

	public Pipe(Function<T> fun) {
		this.fun = fun;
		output = new ArrayList<T>();
		collector = new OutputCollector();
		head = this;
	}

	public  Pipe(Function<T> fun);
	public  Pipe(Pipe<T> previous, Function<T> fun);

}