more expressive algorithm