with cons as the underlying structure, everything just falls into place