use delegate to implement modules' interfaces