improve extensibility