inconsistency between << and BITx.
Is (uint32_t) really needed ?