use the less naive implementation by default