split tests and implementation