seats) • DB checks if seats are available: ◦ Not available: throws an error ◦ Available: marks seats as reserved (previous seats are discarded) • UserCart adds seats to list of reserved seats Checkout • UserCart calls DB.checkout(id) • DB marks all reserved seats associated with id as taken • UserCart sends tickets for all seats in list of reserved seats