defining the interface