modified the interface of the create function