extended with fix-point combinator