no need for macro
using function instead of macro
version up