Separate interfaces and implementations