types layer
solvers lib
refactoring and paving way for generalisations
merge
merge