We need to keep some better track of state