testing with abstract base instead of interface.