Added $interface and tests