We had some indirect coverage of this already, so this mostly focuses on error cases and corner cases.