add Taylor R. Campbell's versions