initialization rearranged