- 8ch indent, no tabs - structs in MixedCase, variables, functions in lower_case - the destructors always unregister the object from the next bigger object, not the other way around - to minimize strict aliasing violations we prefer unions over casting - for robustness reasons destructors should be able to destruct half-initialized objects, too - error codes are returned as negative Exxx. i.e. return -EINVAL. There are some exceptions: for constructors its is OK to return NULL on OOM. For lookup functions NULL is fine too for "not found".