tests and decoupling