tested whatever, added the cancel state stuff