added iterable interface