refactor all core features