Is there cleaner way to speed up boot time? (wicked.service)

systemd-analyze blame | head -10
         18.878s wicked.service
          1.272s apparmor.service
          1.134s wickedd.service
           827ms display-manager.service
           648ms systemd-logind.service
           567ms firewalld.service
           429ms systemd-udevd.service
           400ms initrd-switch-root.service
           325ms systemd-journald.service
           274ms plymouth-quit-wait.service
systemd-analyze critical-chain
The time when unit became active or started is printed after the "@" character.
The time the unit took to start is printed after the "+" character.

graphical.target @22.678s
└─display-manager.service @21.849s +827ms
  └─systemd-user-sessions.service @21.838s +9ms
    └─network.target @21.833s
      └─wicked.service @2.953s +18.878s
        └─wickedd-nanny.service @2.925s +25ms
          └─wickedd.service @1.788s +1.134s
            └─wickedd-dhcp4.service @1.665s +120ms
              └─dbus.service @1.650s
                └─basic.target @1.634s
                  └─paths.target @1.632s
                    └─smartd_generate_opts.path @1.611s
                      └─sysinit.target @1.572s
                        └─apparmor.service @298ms +1.272s
                          └─systemd-journald.socket
                            └─system.slice
                              └─-.slice