only crayftn is too stupid to handle ifdef