add doc comments
begin seperating solver out into smaller classes