implement a couple of interfaces