Factory implementation is done