i agree with qwerty's approach on this... abstracting the layers of code would make portability an easier prospect... and could be gradually coded into the engine while the HAL interface for the various platforms is thought out and coded...
... thus allowing for a smooth and uninterrupted transition.