refactor solver.parseURL() to use generators
refactor solver.Problem.generateMetadata() to eliminate ome ugly code