threw away a bunch of compiler  bug workaroudn defines only needed for gcc46