Finish push/pull impl. Will refactor later