Use parameters instead of protocols