without refactor