more effective init