Separate IdentityMap and dirty tracking