{Source,Dataset,etc}.create now always returns a {Source,Dataset,etc.}... and .create! dies if it's not valid