I like the base classes with init that takes data... I think the cleanest implementation would be for the standard construction to basically take (future) attributes that require minimal processing, whereas advanced constructors are there for cases that require more processing and end by calling the  basic constructor.