use bus

side effects are only in views
extract logic