more correct initialization api