Updated Factory and Interface to comply with virtual members