registering new functions and moving macros here