added extendable interface + trait implementation