Update to use interfaces