add type traits and update asserts header