added new type traits stuff