initialization restructure