added distribute, distributeAll