added an optional, basic, non-configurable affine transform
slight API change / minor refactoring