self-looping due to epsilon checked, added more validations