added factory method for strategy