Improve maintainability and readability

This should also probably be split into two files which are not file linked - we've every single method #if'd and with an underlying ISettings interface, I don't really see any advantage in putting these two implementations in one linked file.