refactoring core methods..  not builtable atm