class ConsumedThingEvent extends ThingEvent<T> {

    public Observable<Optional<T>> observer() throws ConsumedThingException {
        try {
            Pair<ProtocolClient, Form> clientAndForm = thing.getClientFor(getForms(), Operation.SUBSCRIBE_EVENT);

            ProtocolClient client = clientAndForm.first();
            Form form = clientAndForm.second();

            return client.observeResource(form)
                    .map(content -> Optional.ofNullable(ContentManager.contentToValue(content, getData())));
        }
        catch (ProtocolClientException e) {
            throw new ConsumedThingException(e);
        }
    }

    public  ConsumedThingEvent(String name, ThingEvent<T> event, ConsumedThing thing);

}