finished my test, except for the factory function