Some changes for better extensibility