interface and methods