introduce MacHelper interface and clean-up API

* there's no need to have a RandomSource within the MacHelper