add @trusted @nogc pure nothrow