Add generic iterator