Added the factory static methods
Added the create static method and the iterator