This should improve portability, be more palatable for future distribution, and enable lower-level control. Addresses #8.