conditional initialize