external init