Final fields
diff --git a/library/src/main/java/com/davemorrissey/labs/subscaleview/ImageViewState.java b/library/src/main/java/com/davemorrissey/labs/subscaleview/ImageViewState.java
index 34c0f99..a5b8aaf 100644
--- a/library/src/main/java/com/davemorrissey/labs/subscaleview/ImageViewState.java
+++ b/library/src/main/java/com/davemorrissey/labs/subscaleview/ImageViewState.java
@@ -10,13 +10,13 @@
 @SuppressWarnings("WeakerAccess")
 public class ImageViewState implements Serializable {
 
-    private float scale;
+    private final float scale;
 
-    private float centerX;
+    private final float centerX;
 
-    private float centerY;
+    private final float centerY;
 
-    private int orientation;
+    private final int orientation;
 
     public ImageViewState(float scale, PointF center, int orientation) {
         this.scale = scale;
diff --git a/library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java b/library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java
index bce28be..f1f4fab 100644
--- a/library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java
+++ b/library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java
@@ -170,7 +170,7 @@
     private int minimumScaleType = SCALE_TYPE_CENTER_INSIDE;
 
     // overrides for the dimensions of the generated tiles
-    public static int TILE_SIZE_AUTO = Integer.MAX_VALUE;
+    public static final int TILE_SIZE_AUTO = Integer.MAX_VALUE;
     private int maxTileWidth = TILE_SIZE_AUTO;
     private int maxTileHeight = TILE_SIZE_AUTO;
 
@@ -260,7 +260,7 @@
     private OnLongClickListener onLongClickListener;
 
     // Long click handler
-    private Handler handler;
+    private final Handler handler;
     private static final int MESSAGE_LONG_CLICK = 1;
 
     // Paint objects created once and reused for efficiency
@@ -273,11 +273,11 @@
     private ScaleAndTranslate satTemp;
     private Matrix matrix;
     private RectF sRect;
-    private float[] srcArray = new float[8];
-    private float[] dstArray = new float[8];
+    private final float[] srcArray = new float[8];
+    private final float[] dstArray = new float[8];
 
     //The logical density of the display
-    private float density;
+    private final float density;
 
     // A global preference for bitmap format, available to decoder classes that respect it
     private static Bitmap.Config preferredBitmapConfig;
@@ -1913,7 +1913,7 @@
             this.vTranslate = vTranslate;
         }
         private float scale;
-        private PointF vTranslate;
+        private final PointF vTranslate;
     }
 
     /**
diff --git a/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.java b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.java
index d4a54ce..870489f 100644
--- a/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.java
+++ b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.java
@@ -13,8 +13,8 @@
 @SuppressWarnings("WeakerAccess")
 public class CompatDecoderFactory<T> implements DecoderFactory<T> {
 
-    private Class<? extends T> clazz;
-    private Bitmap.Config bitmapConfig;
+    private final Class<? extends T> clazz;
+    private final Bitmap.Config bitmapConfig;
 
     /**
      * Construct a factory for the given class. This must have a default constructor.
diff --git a/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.java b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.java
index 0dea670..80e415b 100644
--- a/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.java
+++ b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.java
@@ -72,7 +72,7 @@
     private Uri uri;
 
     private long fileLength = Long.MAX_VALUE;
-    private Point imageDimensions = new Point(0, 0);
+    private final Point imageDimensions = new Point(0, 0);
     private final AtomicBoolean lazyInited = new AtomicBoolean(false);
 
     @Keep
@@ -339,7 +339,7 @@
      */
     private static class DecoderPool {
         private final Semaphore available = new Semaphore(0, true);
-        private Map<BitmapRegionDecoder, Boolean> decoders = new ConcurrentHashMap<>();
+        private final Map<BitmapRegionDecoder, Boolean> decoders = new ConcurrentHashMap<>();
 
         /**
          * Returns false if there is at least one decoder in the pool.