restructured for future OS independence