modify to use interface correctly