refactor some stateless feature functions to avoid using EvaluateWhenApplied(). Not kosher
merge