now accepts fold to any result

pulled out results as type func result type params, so one can now decide what the directive folds to.