- fixed bug in test_solver
- minor optimisation in solver
- added long description to top of solver.py