97ec75c14d
This is a pretty big change to take advantge of the type parameters. It simplifies things and makes them more safe.