interpretable constructors, access control, test