support init/2 method