now throws exceptions instead of logging error
ported to OSX, same interface
updated read me to reflect OS X library