diff --git a/src/main/java/com/gitblit/auth/AuthenticationProvider.java b/src/main/java/com/gitblit/auth/AuthenticationProvider.java
index 29051df..f6511ba 100644
--- a/src/main/java/com/gitblit/auth/AuthenticationProvider.java
+++ b/src/main/java/com/gitblit/auth/AuthenticationProvider.java
@@ -16,6 +16,7 @@
 package com.gitblit.auth;
 
 import java.io.File;
+import java.math.BigInteger;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -27,6 +28,7 @@
 import com.gitblit.models.TeamModel;
 import com.gitblit.models.UserModel;
 import com.gitblit.utils.ArrayUtils;
+import com.gitblit.utils.DeepCopier;
 import com.gitblit.utils.StringUtils;
 
 public abstract class AuthenticationProvider {
@@ -78,24 +80,35 @@
 	}
 
 	protected void updateUser(UserModel userModel) {
-		// TODO implement user model change detection
-		// account for new user and revised user
+		final UserModel userLocalDB = userManager.getUserModel(userModel.getName());
 
-		// username
-		// displayname
-		// email address
-		// cookie
+		// Establish the checksum of the current version of the user
+		final BigInteger userCurrentCheck = DeepCopier.checksum(userModel);
 
-		userManager.updateUserModel(userModel);
+		// Establish the checksum of the stored version of the user
+		final BigInteger userLocalDBcheck = DeepCopier.checksum(userLocalDB);
+
+		// Compare the checksums
+		if (!userCurrentCheck.equals(userLocalDBcheck)) {
+			// If mismatch, save the new instance.
+			userManager.updateUserModel(userModel);
+		}
 	}
 
 	protected void updateTeam(TeamModel teamModel) {
-		// TODO implement team model change detection
-		// account for new team and revised team
+		final TeamModel teamLocalDB = userManager.getTeamModel(teamModel.name);
 
-		// memberships
+		// Establish the checksum of the current version of the team
+		final BigInteger teamCurrentCheck = DeepCopier.checksum(teamModel);
 
-		userManager.updateTeamModel(teamModel);
+		// Establish the checksum of the stored version of the team
+		final BigInteger teamLocalDBcheck = DeepCopier.checksum(teamLocalDB);
+
+		// Compare the checksums
+		if (!teamCurrentCheck.equals(teamLocalDBcheck)) {
+			// If mismatch, save the new instance.
+			userManager.updateTeamModel(teamModel);
+		}
 	}
 
 	public abstract void setup();
diff --git a/src/main/java/com/gitblit/utils/DeepCopier.java b/src/main/java/com/gitblit/utils/DeepCopier.java
index 5d89606..fc76f1a 100644
--- a/src/main/java/com/gitblit/utils/DeepCopier.java
+++ b/src/main/java/com/gitblit/utils/DeepCopier.java
@@ -23,10 +23,43 @@
 import java.io.ObjectOutputStream;
 import java.io.PipedInputStream;
 import java.io.PipedOutputStream;
+import java.math.BigInteger;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
 
 public class DeepCopier {
 
 	/**
+	 * Utility method to calculate the checksum of an object.
+	 * @param sourceObject The object from which to establish the checksum.
+	 * @return The checksum
+	 * @throws IOException
+	 */
+	public static BigInteger checksum(Object sourceObject) {
+
+	    if (sourceObject == null) {
+	      return BigInteger.ZERO;
+	    }
+
+	    try {
+		    ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		    ObjectOutputStream oos = new ObjectOutputStream(baos);
+		    oos.writeObject(sourceObject);
+		    oos.close();
+
+	    	MessageDigest m = MessageDigest.getInstance("SHA-1");
+	    	m.update(baos.toByteArray());
+	    	return new BigInteger(1, m.digest());
+	    } catch (IOException e) {
+	    	throw new RuntimeException(e);
+	    } catch (NoSuchAlgorithmException e) {
+	    	// impossible
+	    }
+
+	    return BigInteger.ZERO;
+	}
+
+	/**
 	 * Produce a deep copy of the given object. Serializes the entire object to
 	 * a byte array in memory. Recommended for relatively small objects.
 	 */
