anchor.diff:  
   
   % create a simple fractal
  -simplFrac(Config) ->
  -
  -    %% FractalConfig = {FractalAlg,CReal,CImaginary, ZReal,ZImaginary,BailoutThreshold,MaxIterationThreshold}
  +simplFrac(ConfigMap) ->
  +
       %% simple config
  -    FractalConfig = {julian,0.5,-0.5, 0,0,4,100},
  -    Width = 10,
  -    Height = 10,
  +    %%FractalConfig = {julian,0.5,-0.5, 0,0,4,100},
  +    %%Width = 10,
  +    %%Height = 10,
   
       %% first create julian data set with some hardcoded configs (add configing later)
           %% XRealRight = 3.0 
           %% XRealLeft = -3.0
           %% YImaginaryLow = -3.0
           %% YImaginaryHigh = 3.0
  -    IterationCountData = createPointData(Width,Height,-3.0, 3.0, -3.0, 3.0, FractalConfig,Config),
  -
  -    %% print some stats on distribution of counts
  -    %% need to do
  -
  -    %% colorize the data using simplest alg
  -    ColorData = imagelib:colorizeData(IterationCountData,simplest,{}),
  -
  -    %% take the x,y,color data and creates an image
  -    imagelib:makeImageFromData( ColorData, Config ),
  -
  -    ok.
  -
  -createPointData(Width,Height, XRealLeft, XRealRight, YImaginaryLow, YImaginaryHigh, FractalConfig,Config) 
  -    when XRealLeft < XRealRight, YImaginaryLow < YImaginaryHigh ->
  +    %%IterationCountData = createPointData(Width,Height,-3.0, 3.0, -3.0, 3.0, ConfigMap),
  +
  +    %% create box of data for every X,Y
  +    Width           = maps:get(width,ConfigMap),
  +    Height          = maps:get(height,ConfigMap),
  +    XRealRight      = maps:get(xRealRight,ConfigMap),
  +    XRealLeft       = maps:get(xRealLeft,ConfigMap),
  +    YImaginaryLow   = maps:get(yImaginaryLow,ConfigMap),
  +    YImaginaryHigh  = maps:get(yImaginaryHigh,ConfigMap),
       %% box is bounded on left by x > XRealLeft and bounded on right by x < XRealRight
       %% box is bounded on top by y > YImaginaryHigh and bounded on bottom by y > YImaginaryLow
       %% box is width pixels wide and height pixels high
  
positive.code: 
  %% computeIterationValue computes fractal value and returns iteration count
  %% function clause for exceeding iteration count
  computeIterationValue(_CReal, _CImaginary, _ZReal,_ZImaginary, 
              IterCount, MaxIterationThreshold, _BailoutThreshold )
          when IterCount >= MaxIterationThreshold ->   % reached iteration limit so return count=limit
      MaxIterationThreshold;
  %% function clause for exceeding bound
  computeIterationValue(_CReal,_CImaginary, ZReal,ZImaginary, IterCount, 
              _MaxIterationThreshold, BailoutThreshold ) 
          when ((ZReal*ZReal)+(ZImaginary*ZImaginary)) > BailoutThreshold -> %bailout exceeded so return iterCount
      IterCount;
  %% function clause for recursing further
  computeIterationValue(CReal,CImaginary, ZReal,ZImaginary, IterCount, 
          MaxIterationThreshold, BailoutThreshold ) ->
      computeIterationValue(CReal,CImaginary, (ZReal*ZReal) - (ZImaginary*ZImaginary) + CReal, (2 * ZReal * ZImaginary) + CImaginary, IterCount+1, MaxIterationThreshold, BailoutThreshold ).
  
  
negative.code:        yImaginaryLow => -3.0,
         yImaginaryHigh => 3.0,
         bailoutThreshold => 4,
         maxIterationThreshold => 100 }.
  
  %% test1 - first simple fractal
  testOne() ->
      simplFrac(testConfig1()).
  