added iterator functionality initial version