two versions, tests