refactored to use unittest runner