add some wrappers and macros