implements proxy and adapter