clean: exit instead of return in subroutines
clean: loop in main()