Add support for nulls and floats.
Additionally, handle bad input better.
Increase compatibility to .NET 3.