re-organize tracking logic so that ContextController properly handles creation and destruction
create less exceptions