Leaving the types entierly abstract is surely more pleasing, but also the biggest source of slowness.