reverse using cons for efficiency
idiomatic cons