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.
