added test framework and factory