interface definition