always deep extend