[impl] add distributivity