public boolean setOption( String op, String val )
	{
		if( op.equals( "crossesAt" ) )                // specifies where axis crosses (double value
		{
			catCross = Short.valueOf( val );
		}
		else if( op.equals( "orientation" ) )
		{    // axis orientation minMax or maxMin  -- fReverse
			fReverse = (val.equals( "maxMin" ));    // means in reverse order
			ByteTools.updateGrBit( grbit, fReverse, 2 );
		}
		else if( op.equals( "crosses" ) )
		{            // specifies how axis crosses it's perpendicular axis (val= max, min, autoZero)  -- fbetween + fMaxCross?/fAutoCross + fMaxCross
			if( val.equals( "max" ) )
			{        // TODO: this is probly wrong
				fMaxCross = true;
				ByteTools.updateGrBit( grbit, fMaxCross, 7 );
			}
			else if( val.equals( "mid" ) )
			{
				fBetween = false;
				ByteTools.updateGrBit( grbit, fBetween, 0 );
			}
			else if( val.equals( "autoZero" ) )
			{
				fBetween = true;    // is this correct??
				ByteTools.updateGrBit( grbit, fBetween, 0 );
			}
			else if( val.equals( "min" ) )
			{
				;
			}
			// TODO:  ???
		}
		else if( op.equals( "tickMarkSkip" ) )    //val= how many tick marks to skip before next one is drawn -- catMark -- catsterrange only?
		{
			catMark = Integer.valueOf( val ).shortValue();
		}
		else if( op.equals( "tickLblSkip" ) )
		{
			catLabel = Integer.valueOf( val ).shortValue();
		}
		else
		{
			return false;    // not handled
		}
		updateRecord();
		return true;
	}