checkout should throw if already checked out