throw instead of assert(false)