added Decorator struct, allows binding of a function to an iterator to be proc'd on dereference, cleaned up code