use status_t internally only