more succinct version generation