Added some error handling and guest checkout