split init to allow child classes to get between the halves.