заодно отрефакторил, вынес общий код в отдельный служебный слой. Чтобы избежать дублирования и переиспользовать код.