diff --git a/convert.m b/convert.m
index cfa44153ee14c93aeaadf995549c31d7971d645a..9d8f055da202eab48e0f8847426fb09cbdedde3e 100644
--- a/convert.m
+++ b/convert.m
@@ -2,15 +2,14 @@ function frames = convert(frames,varargin)
 %CONVERT Summary of this function goes here
 %   Detailed explanation goes here
 
-colSpaces = {'rgb','ycbcr'};
 
 p = inputParser; p.StructExpand = true; p.KeepUnmatched = true;
-p.addOptional('outColSpace','ycbcr',@(x) any(validatestring(x,colSpaces)));
-p.addOptional( 'inColSpace','rgb'  ,@(x) any(validatestring(x,colSpaces)));
+p.addOptional('outColSpace' , 'ycbcr'     , @ischar);
+p.addOptional( 'inColSpace' , 'rgb'       , @ischar);
 
 p.parse(varargin{:});
- inColSpace  = p.Results. inColSpace;
-outColSpace  = p.Results.outColSpace;
+inColSpace  = p.Results.inColSpace;
+outColSpace = p.Results.outColSpace;
 
 imgSize = ndims(frames{1});
 switch imgSize
diff --git a/read.m b/read.m
index 883fb9a2640339244eed475acefae7957f7fb93a..dd6b92374e436be0cd5a46b600752f6bca9b6147 100644
--- a/read.m
+++ b/read.m
@@ -7,9 +7,7 @@ function frames = read(varargin)
 %   READ(frames,'readPrecision',readPrecision) specify read data type
 
 %% Parse input parameters
-subSamps  = {'400','420','422','444'};
-types = {'bit','ubit','int','uint','float','single','double'};
-validatePrecision = @(prec) any(validatestring(utils.precision(prec),types));
+validateSubSamp   = @(x)    any(strcmp(x,{'400','420','422','444'}));
 defRecDir = fullfile(pwd,'Rec');
 
 p = inputParser; p.StructExpand = true; p.KeepUnmatched = true;
@@ -23,17 +21,17 @@ yuvParams = p.Results;
 try
     m = get_mat(yuvParams.recDir,yuvParams.name,false);
     defSubSamp = m.subSamp;
-    defReadPrecision = m.readPrecision;
     defWritePrecision = m.writePrecision;
+    defReadPrecision = m.readPrecision;
 catch
-    defSubSamp = subSamps{1};
-    defReadPrecision = 'uint8';
+    defSubSamp = '444';
     defWritePrecision = 'uint8';
+    defReadPrecision = 'uint8';
 end
 
-p.addParameter('subSamp'       , defSubSamp       , @(x) any(validatestring(x,subSamps) ));
-p.addParameter('writePrecision', defWritePrecision, validatePrecision);
-p.addParameter('readPrecision' , defReadPrecision , validatePrecision);
+p.addParameter('subSamp'       , defSubSamp       , validateSubSamp);
+p.addParameter('writePrecision', defWritePrecision, @ischar);
+p.addParameter('readPrecision' , defReadPrecision , @ischar);
 
 p.parse(varargin{:});
 yuvParams = p.Results;
diff --git a/write.m b/write.m
index 713463ac34e144964cfe50f562829fbbd45e2889..874615cc686964e1135791957c4efe1979a1c5dc 100644
--- a/write.m
+++ b/write.m
@@ -7,9 +7,7 @@ function yuvSize = write(frames,varargin)
 %   WRITE(frames,'readPrecision',readPrecision) specify read data type
 
 %% Parse input parameters
-subSamps  = {'400','420','422','444'};
-types = {'bit','ubit','int','uint','float','single','double'};
-validatePrecision = @(prec) any(validatestring(utils.precision(prec),types));
+validateSubSamp   = @(x)    any(strcmp(x,{'400','420','422','444'}));
 defRefDir = fullfile(pwd,'Ref');
 
 p = inputParser; p.StructExpand = true; p.KeepUnmatched = true;
@@ -26,14 +24,14 @@ try
     defWritePrecision = m.writePrecision;
     defReadPrecision = m.readPrecision;
 catch
-    defSubSamp = subSamps{1};
+    defSubSamp = '444';
     defWritePrecision = class(frames{1});
     defReadPrecision = class(frames{1});
 end
 
-p.addParameter('subSamp'       , defSubSamp       , @(x) any(validatestring(x,subSamps) ));
-p.addParameter('writePrecision', defWritePrecision, validatePrecision);
-p.addParameter('readPrecision' , defReadPrecision , validatePrecision);
+p.addParameter('subSamp'       , defSubSamp       , validateSubSamp);
+p.addParameter('writePrecision', defWritePrecision, @ischar);
+p.addParameter('readPrecision' , defReadPrecision , @ischar);
 
 p.parse(varargin{:});
 yuvParams = p.Results;