i'm sorry but this header is a horrible hack of macros.... this should be seriously refactored.