add `Ticket` trait