Tweaked interface.. added first pass of collections impl