id can be null