Using decorator pattern instead of Strategy