Add abstract class into interface.
Add service layer.
Cleanup service layer with factory method.