Не знаю, но твоё сообщение напомнило мне об одной мысли, что хотел сказать по поводу твоего последнего модуля. Универсальный интерфейс делается в Си-стиле. Пишется обёртка над объектом в следующем виде:
То есть все методы - это функции, принимающие сам объект (указатель) в качестве одного из параметров. Для внешнего кода ссылка на твой объект - это чёрный ящик.