removed define compilers (they're better done as macros); added compiler for def