remove side_effects, add test for do