seems to produce expected values