+=item Part - a single part
+
+=item Service - a part without onhand, and without inventory accounting
+
+=item Assembly - a collection of both parts and services
+
+=back
+
+These types are sadly represented by data inside the class and cannot be
+migrated into a flag. To work around this, each C<Part> object knows what type
+it currently is. Since the type ist data driven, there ist no explicit setting
+method for it, but you can construct them explicitly with C<new_part>,
+C<new_service>, and C<new_assembly>. A Buchungsgruppe should be supplied in this
+case, but it will use the default Buchungsgruppe if you don't.
+
+Matching these there are assorted helper methods dealing with type:
+
+=head2 new_part PARAMS
+
+=head2 new_service PARAMS
+
+=head2 new_assembly PARAMS
+
+Will set the appropriate data fields so that the resulting instance will be of
+tthe requested type. Since part of the distinction are accounting targets,
+providing a C<Buchungsgruppe> is recommended. If none is given the constructor
+will load a default one and set the accounting targets from it.
+
+=head2 type
+
+Returns the type as a string. Can be one of C<part>, C<service>, C<assembly>.
+
+=head2 is_type TYPE