no default case, nice thing to have normally with a Q_ASSERT(0)