corrected: value constructor, visitor