new interfaces defined in terms of distribution class are much cleaner