Ich bin mir nicht ganz sicher, aber hast du schonmal über Polymorphie nachgedacht?
Also das du in einer
Unit deine TEngine-Klasse mit abstrakten methoden definierst, diese dann in den Manager-Units einbindest und zum schluss noch in die konkrete TEngine-
Unit deine Managerunit einbindest?