added Strategy base class