added interface to avoid circular dependencies through modules