Add base factory , version factory with unit tests