define interface and impl.