add helper function to improve the capabilities checking procedure at ctor()
change from manually checking each supported type to a loop query