I just want to say one thing about only doing solves, which is that you can definitely improve a lot with it. I have barely ever done targeted practice other than alg learning, and most algs I've learnt, I've also forgotten. Still, I average close to sub-7 (according to when I last solved a lot, at least). It's just that there are two types of solving. The first is to solve mindlessly, which isn't going to help you improve. The second is solving without caring about being fast, but only about not being stupid. For example, don't solve the first F2L pair you see in the first way you can think of, but maybe solve a different F2L pair which will give you a better case after. Or maybe try that risky double x-cross that you aren't sure will work, instead of the trivial cross solution which puts all corners in the D layer. The more you do this, the faster and more confidently you can do smarter solutions, which means you improved. Of course, the degree to which you can do this highly depends on your level, but I think the concept applies to anyone.
Edit: btw, that's not to say you shouldn't do targeted practice. I just wanted to address something which I believe is quite a common misconception