Compact changes
Add designated initializer
Check return values.

Return nil on error.