initial commit
implement iterator