Even though I'm nowhere near there yet (got to get JSCore working first ;) ), here is an idea: Have KWQ use cross-platform C/C++ implementations, keeping everything as high level as possible, and use C++ inheritence to inherit from platform specific implementations. for instance, QRegion can be implemented sans Cocoa for the stuff that is already cross platform, but inherit from a KWQRegion which has different implementations for Cocoa, Win32, GTK+, Qt (hey, why not?), wxWidgets, etc... possible directory layout: KWQ\ Platform\ Cocoa\ C++ / Objective C sources for Cocoa GTK+\ C++ / C sources for GTK+ wxWidgets\ C++ sources for wxWidgets Win32\ C++ / C sources for Win32 \C++ sources which are fairly cross platform (there's plenty) And possibly do this for other places as well... to separate Cocoa calls from the rest.