building up from the earlier versions