Eleminate abstract constructor and code duplication