Add tests. Fix issues around expressions returning self