Improved interface, now compiler checks for proper nil termination
Replaced exceptions to be more idiomatic