solver seems to be basically working