add @safe pure nothrow