don't use macro for return, some fixes