separate the interface