fix class names and use interface for type hints instead of concrete implementations
add interface defintions
make service classes configurable