core - under refactoring