strategy pattern
Proc object version of strategy pattern.