add recursive iterate method. update loader