Redid solver to better handle structures, this will also be easier to test which I'll be writing cases for soon. Going to implement DollarSwift in next commit