Added strategy pattern