Removed noexcept for MSVC compatibility