First 41

After doing some testing I have found no appreciable difference in time between the current implementation and the implementation proposed in issue #41. The change in the API, users expecting a `ValueError` instead of `None`, is the bigger issue. Resolves #41.