add generalised DAO and DatabaseFactory classes, and use them to obtainAuditTrailContributorDAO's
refactor the DatabaseFactory concept