Be more specific with port options
Cleaning up code
Update error handling
Add top-level moduledoc