Add @safe, move ID out of Entity