added module abstraction layer