making all types abstract to work with integration tests