new way of conditioning by defining hidden variables (fields). Works for top level case classes for now.