strategy pattern of reference version