port UserComponents enum and most of ModeList, it will still need some tweaks