more work on interfaces