split the interface into several modules