Figured I should commit.. lots of refactoring