module decoupling and more test