avoid use of function keyword for portability