refactor + new class