thinking through future stream interface
first pass at future stream interface