First pass at rewrite to match go standard library format and methodology
Roughing out tests
Updating reader to support multiple types