framework: move etcd logic out of framework