create method can accept object with init method, not only function