cleanup interfaces and IoC