Massive refactor, added dynamic parsing via yml config. Still needs another pass