refactored to package tests in separate modules