#97 extensibility refactoring