added distributivity