less naive implementation of 3_2