added solution iterator interface