Added static create() functions and made constructors protected for several classes.