add Cayley function