Только разбираться, какие службы будут использоваться, и обеспечивать наличие модулей-реализаций (которые втыкают дин. разъёмы).

Проблема общая, связана с тем, что динамическая структура любого приложения не соответствует 1-в-1 статической (модульной). (В немодульных языках она ещё больше усугубляется из-за того, что вообще однозначного "представителя" статической архитектуры в динамике нет).

Решение второй проблемы: Dialog.Call обращается к интерпретатору команд через разъём Dialog.CallHook.
Реализован интерпретатор команд в StdInterpreter. Т.е. - его тоже до кучи надо.