observer & bot