now modules can take interfaces