factored out base classes for surveys