split init function