It's not clear to me what the intent behind the interface and its methods are, please add a brief comment in the code on what each function is meant to accomplish