deps is optional