refactoring of Distribution