Complete changes began by previous patch(es) (things that were missed): The internal header should not precede polymorphic definition in: user_record.c seuser_record.c iface_record.c boolean_record.c Include guards added for: context_internal.h typedef define guard added for: port_record.h (and include port_internal.h in port_record.c) ========= Then... move all extern declarations of the record method table into the internal header where they belong - that requires including database.h, but that's okay, because the previous patches fixed issues relating to that.