Add abstraction layer

Not backwards compatible but transition is trivial. It's only 2 variables.
An example is included in the readme file.

Works on RHEL and Debian.