+ smart toggling