id may be null