cleaning up generics usage, part 3 (done-ish)
first, quick -and-dirty pass at implementing "random object" injection