added funtion definition macros