implement more interfaces that make sense in context