has_* refactor
msvc warnings cleanup