moved audit out to its own module. refactored necessary stuff due to the move