na - major refactoring.