Changed the backwards solver to be a decorator of the forwards solver. This should allow both solvers to share quite a bit of information and thus save memory.