a slightly more functional zk role