general-refactor: refactor init for easier use as a mixin