support protocol loading from modules
protocols and tidy up