All the above depend on the GraphicsDevice sadly which has too many platform dependencies at present.
Only way to move those would be to make interfaces for a heap load of other things including the mai 4 states, which as far as I was aware it outside the scope for the first pass