new solver added with some helper functions