adding interfaces, Iterator and tests for the iterator