new tests, better code organization