reserver refactor