constructors and exceptions