First try to build a solver

Also introduced Command pattern