ordered initialization