add generic audit functions