Add some interfaces and implementations