leave error handling to library users