Lots of indirection ++++