improve initialization