dont use boost::iequals because it uses std::toupper which is amazingly wtf slow. replaced with ascii_iequals