better support for if else fi