fixed inifinte loop bug