better extensibility