better compiler macros, less consing