more module separation