move select validation logic into a shared place where the select ctor,