fix pure and nothrow