split functions into multiple modules