refactoring nodedecorators to have a BaseDecerator