added cached solver