Using decorator pattern instead of strategy pattern