can't this be implicitly defined