finished everything except the implementation for the iterator interface methods