init full implementation