refactor etcd backend