text:
package StateMachine;

import java.util.ArrayList;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;

public class AutoNetworkBuilder {

	private final static String PREF_ROOT = "ChillOutAutonomousNetworks";
	private static Preferences prefRoot, prefs;

	private static ArrayList<AutoNetwork> autoNets;

	private static boolean initialized = false;

	public static void initialize() throws Exception {

		if (!initialized) {
			autoNets = null;
			prefRoot = Preferences.userRoot();
			prefs = prefRoot.node(PREF_ROOT);

			initialized = true;
		}
	}

	public static ArrayList<AutoNetwork> readInNetworks() {

		try {
			if (!initialized)
				initialize();
			}
		catch (Exception e) {
			e.printStackTrace();
		}

		autoNets = new ArrayList<AutoNetwork>();

		/***** use only when storing the preferences first time *****/

		// clear current preferences keys from previous runs
		try {
			prefs.clear();
			Preferences node = prefs.node("<Do Nothing Network>");
			node.removeNode();
		}
		catch (BackingStoreException e) {
			e.printStackTrace();
		}

		// create networks
		autoNets.add(AutoChooser.DO_NOTHING, createDoNothingNetwork());
		autoNets.add(AutoChooser.DRIVE_FORWARD, createDriveForward());
		autoNets.add(AutoChooser.DEPOSIT_GEAR_LEFT, createDepositGearLeft());
		autoNets.add(AutoChooser.DEPOSIT_GEAR_CENTER, createDepositGearCenter());
		autoNets.add(AutoChooser.DEPOSIT_GEAR_RIGHT, createDepositGearRight());
		autoNets.add(AutoChooser.DRIVE_AND_SHOOT_BLUE_LEFT, createDriveAndShootBlueLeft());
		autoNets.add(AutoChooser.DRIVE_AND_SHOOT_BLUE_CENTER, createDriveAndShootBlueCenter());
		autoNets.add(AutoChooser.DRIVE_AND_SHOOT_BLUE_RIGHT, createDriveAndShootBlueRight());
		autoNets.add(AutoChooser.DRIVE_AND_SHOOT_RED_LEFT, createDriveAndShootRedLeft());
		autoNets.add(AutoChooser.DRIVE_AND_SHOOT_RED_CENTER, createDriveAndShootRedCenter());
		autoNets.add(AutoChooser.DRIVE_AND_SHOOT_RED_RIGHT, createDriveAndShootRedRight());

		// add the networks to the prefs object
		int counter = 0;
		for (AutoNetwork a: autoNets)
			a.persistWrite(counter++,prefs);

		// store networks to file
	    try {
	        FileOutputStream fos = new FileOutputStream("/home/lvuser/chillOutAutoNets.xml");
	        prefs.exportSubtree(fos);
	        fos.close();
	    } catch (Exception e) {
	        e.printStackTrace();
	    }

		/**** TODO: normal operation - read in preferences file ***/

		return autoNets;
	}

	private void parseSingleNetwork() {

	}

	// **** DO NOTHING Network *****
	private static AutoNetwork createDoNothingNetwork() {

		AutoNetwork autoNet = new AutoNetwork("<Do Nothing Network>");

		AutoState idleState = new AutoState("<Idle State>");
		IdleAction deadEnd = new IdleAction("<Dead End Action>");
		idleState.addAction(deadEnd);

		autoNet.addState(idleState);

		return autoNet;
	}

	// **** MOVE FORWARD Network *****
	// 1) be idle for a number of sec
	// 2) drive forward for a number of sec
	// 3) go back to idle and stay there
	private static AutoNetwork createDriveForward() {

		AutoNetwork autoNet = new AutoNetwork("<Drive Forward Network>");

		AutoState idleState = new AutoState("<Idle State 1>");
		IdleAction startIdle = new IdleAction("<Start Idle Action 1>");
		TimeEvent timer1 = new TimeEvent(0.5);  // timer event
		idleState.addAction(startIdle);
		idleState.addEvent(timer1);

		AutoState driveState = new AutoState("<Drive State 1>");
		DriveForwardAction driveForward = new DriveForwardAction("<Drive Forward Action>", 0.5, true);
		TimeEvent timer2 = new TimeEvent(3.0);  // drive forward timer event
		driveState.addAction(driveForward);
		driveState.addEvent(timer2);

		AutoState idleState2 = new AutoState("<Idle State 2>");
		IdleAction deadEnd = new IdleAction("<Dead End Action>");
		idleState2.addAction(deadEnd);

		// connect each event with a state to move to
		idleState.associateNextState(driveState);
		driveState.associateNextState(idleState2);

		autoNet.addState(idleState);
		autoNet.addState(driveState);
		autoNet.addState(idleState2);

		return autoNet;
	}

	// **** DEPOSIT GEAR LEFT SIDE Network *****
	// 1) be idle for a number of sec
	// 2) drive forward for a number of sec
	// 3) Turn RIGHT a number of degrees
	// 4) drive forward, using camera feedback to steer then stop
	// 5) go back to idle and stay there
	private static AutoNetwork createDepositGearLeft() {

		AutoNetwork autoNet = new AutoNetwork("<Deposit Gear (left side) Network>");

		AutoState idleState = new AutoState("<Idle State 1>");
		IdleAction startIdle = new IdleAction("<Start Idle Action 1>");
		TimeEvent timer1 = new TimeEvent(0.5);  // timer event
		idleState.addAction(startIdle);
		idleState.addEvent(timer1);

		AutoState driveState = new AutoState("<Drive State 1>");
		DriveForwardAction driveForward = new DriveForwardAction("<Drive Forward Action>", 0.5, true);
		TimeEvent timer2 = new TimeEvent(3.0);  // drive forward timer event
		driveState.addAction(driveForward);
		driveState.addEvent(timer2);

		AutoState turnRightState = new AutoState("<Turn Right State +45 deg>");
		TurnAction turnRightAction = new TurnAction("<Turn right action>",45, true, 0.5);
		GyroAngleEvent gyroRight = new GyroAngleEvent(45, true, GyroAngleEvent.AnglePolarity.kGreaterThan);
		turnRightState.addAction(turnRightAction);
		turnRightState.addEvent(gyroRight);

		AutoState driveToTargetState = new AutoState("<Drive To Target State 1>");
		DriveTowardTargetAction driveToTarget = new DriveTowardTargetAction("<Drive To Target Action>", 0.5, 80, 90); // desired target at x=80, y=90 (assume 160x120 img)
		UltrasonicEvent ultra1 = new UltrasonicEvent(2.0);  // ultrasonic event triggers at 2 inches
		driveToTargetState.addAction(driveToTarget);
		driveToTargetState.addEvent(ultra1);

		AutoState idleState2 = new AutoState("<Idle State 2>");
		IdleAction deadEnd = new IdleAction("<Dead End Action>");
		idleState2.addAction(deadEnd);

		// connect each event with a state to move to
		idleState.associateNextState(driveState);
		driveState.associateNextState(turnRightState);
		turnRightState.associateNextState(driveToTargetState);
		driveToTargetState.associateNextState(idleState2);

		autoNet.addState(idleState);
		autoNet.addState(driveState);
		autoNet.addState(turnRightState);
		autoNet.addState(driveToTargetState);
		autoNet.addState(idleState2);

		return autoNet;
	}

	// **** DEPOSIT GEAR CENTER Network *****
	// 1) be idle for a number of sec
	// 2) drive forward for a number of sec
	// 3) drive forward, using camera feedback to steer then stop
	// 4) go back to idle and stay there
	private static AutoNetwork createDepositGearCenter() {

		AutoNetwork autoNet = new AutoNetwork("<Deposit Gear (Center) Network>");

		AutoState idleState = new AutoState("<Idle State 1>");
		IdleAction startIdle = new IdleAction("<Start Idle Action 1>");
		TimeEvent timer1 = new TimeEvent(0.5);  // timer event
		idleState.addAction(startIdle);
		idleState.addEvent(timer1);

		AutoState driveState = new AutoState("<Drive State 1>");
		DriveForwardAction driveForward = new DriveForwardAction("<Drive Forward Action>", 0.5, true);
		TimeEvent timer2 = new TimeEvent(1.0);  // drive forward timer event
		driveState.addAction(driveForward);
		driveState.addEvent(timer2);

		AutoState driveToTargetState = new AutoState("<Drive To Target State 1>");
		DriveTowardTargetAction driveToTarget = new DriveTowardTargetAction("<Drive To Target Action>", 0.5, 80, 90);   // desired target at x=80, y=90 (assume 160x120 img)
		UltrasonicEvent ultra1 = new UltrasonicEvent(2.0);  // ultrasonic event triggers at 2 inches
		driveToTargetState.addAction(driveToTarget);
		driveToTargetState.addEvent(ultra1);

		AutoState idleState2 = new AutoState("<Idle State 2>");
		IdleAction deadEnd = new IdleAction("<Dead End Action>");
		idleState2.addAction(deadEnd);

		// connect each event with a state to move to
		idleState.associateNextState(driveState);
		driveState.associateNextState(driveToTargetState);
		driveToTargetState.associateNextState(idleState2);

		autoNet.addState(idleState);
		autoNet.addState(driveState);
		autoNet.addState(driveToTargetState);
		autoNet.addState(idleState2);

		return autoNet;
	}

	// **** DEPOSIT GEAR RIGHT SIDE Network *****
	// 1) be idle for a number of sec
	// 2) drive forward for a number of sec
	// 3) Turn LEFT a number of degrees
	// 4) drive forward, using camera feedback to steer then stop
	// 5) go back to idle and stay there
	private static AutoNetwork createDepositGearRight() {

		AutoNetwork autoNet = new AutoNetwork("<Deposit Gear (Right Side) Network>");

		AutoState idleState = new AutoState("<Idle State 1>");
		IdleAction startIdle = new IdleAction("<Start Idle Action 1>");
		TimeEvent timer1 = new TimeEvent(0.5);  // timer event
		idleState.addAction(startIdle);
		idleState.addEvent(timer1);

		AutoState driveState = new AutoState("<Drive State 1>");
		DriveForwardAction driveForward = new DriveForwardAction("<Drive Forward Action>", 0.5, true);
		TimeEvent timer2 = new TimeEvent(3.0);  // drive forward timer event
		driveState.addAction(driveForward);
		driveState.addEvent(timer2);

		AutoState turnLeftState = new AutoState("<Turn Left State -45 deg>");
		TurnAction turnLeftAction = new TurnAction("<Turn left action>",-45, true, 0.5);
		GyroAngleEvent gyroLeft = new GyroAngleEvent(-45, true, GyroAngleEvent.AnglePolarity.kLessThan);
		turnLeftState.addAction(turnLeftAction);
		turnLeftState.addEvent(gyroLeft);

		AutoState driveToTargetState = new AutoState("<Drive To Target State 1>");
		DriveTowardTargetAction driveToTarget = new DriveTowardTargetAction("<Drive To Target Action>", 0.5, 80, 90); // desired target at x=80, y=90 (assume 160x120 img)
		UltrasonicEvent ultra1 = new UltrasonicEvent(2.0);  // ultrasonic event triggers at 2 inches
		driveToTargetState.addAction(driveToTarget);
		driveToTargetState.addEvent(ultra1);

		AutoState idleState2 = new AutoState("<Idle State 2>");
		IdleAction deadEnd = new IdleAction("<Dead End Action>");
		idleState2.addAction(deadEnd);

		// connect each event with a state to move to
		idleState.associateNextState(driveState);
		driveState.associateNextState(turnLeftState);
		turnLeftState.associateNextState(driveToTargetState);
		driveToTargetState.associateNextState(idleState2);

		autoNet.addState(idleState);
		autoNet.addState(driveState);
		autoNet.addState(turnLeftState);
		autoNet.addState(driveToTargetState);
		autoNet.addState(idleState2);

		return autoNet;
	}

	// **** DRIVE AND SHOOT BLUE LEFT SIDE Network *****
	// 1) be idle for a number of sec
	// 2) drive forward for a number of sec
	// 3) Turn LEFT a number of degrees
	// 4) Calibrate shooter
	// 5) Shoot at high goal
	// 6) go back to idle and stay there
	private static AutoNetwork createDriveAndShootBlueLeft() {

		AutoNetwork autoNet = new AutoNetwork("<Drive and Shoot (Blue Left Side) Network>");

		AutoState idleState = new AutoState("<Idle State 1>");
		IdleAction startIdle = new IdleAction("<Start Idle Action 1>");
		TimeEvent timer1 = new TimeEvent(0.5);  // timer event
		idleState.addAction(startIdle);
		idleState.addEvent(timer1);

		AutoState driveState = new AutoState("<Drive State 1>");
		DriveForwardAction driveForward = new DriveForwardAction("<Drive Forward Action>", 0.5, true);
		TimeEvent timer2 = new TimeEvent(1.0);  // drive forward timer event
		driveState.addAction(driveForward);
		driveState.addEvent(timer2);

		AutoState turnLeftState = new AutoState("<Turn Left State -135 deg>");
		TurnAction turnLeftAction = new TurnAction("<Turn left action>",-135, true, 0.5);
		GyroAngleEvent gyroLeft = new GyroAngleEvent(-135, true, GyroAngleEvent.AnglePolarity.kLessThan);
		turnLeftState.addAction(turnLeftAction);
		turnLeftState.addEvent(gyroLeft);

		AutoState targetCalState = new AutoState("<Cal Target State 1>");
		CalibrateTargetAction calTarget = new CalibrateTargetAction("<Cal Target Action 1>", 80, 30);  // desired target at x=80, y=30 (assume 160x120 img)
		CalibratedEvent calEvent1 = new CalibratedEvent(80, 30, 5, 5);
		targetCalState.addAction(calTarget);
		targetCalState.addEvent(calEvent1);

		// TODO:  Shooter state here

		AutoState idleState2 = new AutoState("<Idle State 2>");
		IdleAction deadEnd = new IdleAction("<Dead End Action>");
		idleState2.addAction(deadEnd);

		// connect each event with a state to move to
		idleState.associateNextState(driveState);
		driveState.associateNextState(turnLeftState);
		turnLeftState.associateNextState(targetCalState);
		targetCalState.associateNextState(idleState2);

		autoNet.addState(idleState);
		autoNet.addState(driveState);
		autoNet.addState(turnLeftState);
		autoNet.addState(targetCalState);
		autoNet.addState(idleState2);

		return autoNet;
	}

	// **** DRIVE AND SHOOT BLUE CENTER Network *****
	// 1) be idle for a number of sec
	// 2) drive forward for a number of sec
	// 3) Turn LEFT a number of degrees
	// 4) drive forward a number of sec
	// 5) Calibrate shooter
	// 6) Shoot at high goal
	// 7) go back to idle and stay there
	private static AutoNetwork createDriveAndShootBlueCenter() {

		AutoNetwork autoNet = new AutoNetwork("<Drive and Shoot (Blue Center) Network>");

		AutoState idleState = new AutoState("<Idle State 1>");
		IdleAction startIdle = new IdleAction("<Start Idle Action 1>");
		TimeEvent timer1 = new TimeEvent(0.5);  // timer event
		idleState.addAction(startIdle);
		idleState.addEvent(timer1);

		AutoState driveState = new AutoState("<Drive State 1>");
		DriveForwardAction driveForward = new DriveForwardAction("<Drive Forward Action>", 0.5, true);
		TimeEvent timer2 = new TimeEvent(1.0);  // drive forward timer event
		driveState.addAction(driveForward);
		driveState.addEvent(timer2);

		AutoState turnLeftState = new AutoState("<Turn Left State -120 deg>");
		TurnAction turnLeftAction = new TurnAction("<Turn left action>",-120, true, 0.5);
		GyroAngleEvent gyroLeft = new GyroAngleEvent(-120, true, GyroAngleEvent.AnglePolarity.kLessThan);
		turnLeftState.addAction(turnLeftAction);
		turnLeftState.addEvent(gyroLeft);

		AutoState targetCalState = new AutoState("<Cal Target State 1>");
		CalibrateTargetAction calTarget = new CalibrateTargetAction("<Cal Target Action 1>", 80, 40);  // desired target at x=80, y=40 (assume 160x120 img)
		CalibratedEvent calEvent1 = new CalibratedEvent(80, 40, 5, 5);
		targetCalState.addAction(calTarget);
		targetCalState.addEvent(calEvent1);

		// TODO:  Shooter state here

		AutoState idleState2 = new AutoState("<Idle State 2>");
		IdleAction deadEnd = new IdleAction("<Dead End Action>");
		idleState2.addAction(deadEnd);

		// connect each event with a state to move to
		idleState.associateNextState(driveState);
		driveState.associateNextState(turnLeftState);
		turnLeftState.associateNextState(targetCalState);
		targetCalState.associateNextState(idleState2);

		autoNet.addState(idleState);
		autoNet.addState(driveState);
		autoNet.addState(turnLeftState);
		autoNet.addState(targetCalState);
		autoNet.addState(idleState2);

		return autoNet;
	}

	// **** DRIVE AND SHOOT BLUE RIGHT SIDE Network *****
	// 1) be idle for a number of sec
	// 2) drive forward for a number of sec
	// 3) Turn LEFT a number of degrees
	// 4) drive forward a number of sec
	// 5) Calibrate shooter
	// 6) Shoot at high goal
	// 7) go back to idle and stay there
	private static AutoNetwork createDriveAndShootBlueRight() {

		AutoNetwork autoNet = new AutoNetwork("<Drive and Shoot (Blue Right Side) Network>");

		AutoState idleState = new AutoState("<Idle State 1>");
		IdleAction startIdle = new IdleAction("<Start Idle Action 1>");
		TimeEvent timer1 = new TimeEvent(0.5);  // timer event
		idleState.addAction(startIdle);
		idleState.addEvent(timer1);

		AutoState driveState = new AutoState("<Drive State 1>");
		DriveForwardAction driveForward = new DriveForwardAction("<Drive Forward Action>", 0.5, true);
		TimeEvent timer2 = new TimeEvent(1.0);  // drive forward timer event
		driveState.addAction(driveForward);
		driveState.addEvent(timer2);

		AutoState turnLeftState = new AutoState("<Turn Left State -110 deg>");
		TurnAction turnLeftAction = new TurnAction("<Turn left action>",-110, true, 0.5);
		GyroAngleEvent gyroLeft = new GyroAngleEvent(-110, true, GyroAngleEvent.AnglePolarity.kLessThan);
		turnLeftState.addAction(turnLeftAction);
		turnLeftState.addEvent(gyroLeft);

		AutoState targetCalState = new AutoState("<Cal Target State 1>");
		CalibrateTargetAction calTarget = new CalibrateTargetAction("<Cal Target Action 1>", 80, 50);  // desired target at x=80, y=50 (assume 160x120 img)
		CalibratedEvent calEvent1 = new CalibratedEvent(80, 50, 5, 5);
		targetCalState.addAction(calTarget);
		targetCalState.addEvent(calEvent1);

		// TODO:  Shooter state here

		AutoState idleState2 = new AutoState("<Idle State 2>");
		IdleAction deadEnd = new IdleAction("<Dead End Action>");
		idleState2.addAction(deadEnd);

		// connect each event with a state to move to
		idleState.associateNextState(driveState);
		driveState.associateNextState(turnLeftState);
		turnLeftState.associateNextState(targetCalState);
		targetCalState.associateNextState(idleState2);

		autoNet.addState(idleState);
		autoNet.addState(driveState);
		autoNet.addState(turnLeftState);
		autoNet.addState(targetCalState);
		autoNet.addState(idleState2);

		return autoNet;
	}

	// **** DRIVE AND SHOOT RED LEFT SIDE Network *****
	// 1) be idle for a number of sec
	// 2) drive forward for a number of sec
	// 3) Turn RIGHT a number of degrees
	// 4) drive forward a number of sec
	// 5) Calibrate shooter
	// 6) Shoot at high goal
	// 7) go back to idle and stay there
	private static AutoNetwork createDriveAndShootRedLeft() {

		AutoNetwork autoNet = new AutoNetwork("<Drive and Shoot (Red Left Side) Network>");

		AutoState idleState = new AutoState("<Idle State 1>");
		IdleAction startIdle = new IdleAction("<Start Idle Action 1>");
		TimeEvent timer1 = new TimeEvent(0.5);  // timer event
		idleState.addAction(startIdle);
		idleState.addEvent(timer1);

		AutoState driveState = new AutoState("<Drive State 1>");
		DriveForwardAction driveForward = new DriveForwardAction("<Drive Forward Action>", 0.5, true);
		TimeEvent timer2 = new TimeEvent(1.0);  // drive forward timer event
		driveState.addAction(driveForward);
		driveState.addEvent(timer2);

		AutoState turnRightState = new AutoState("<Turn Right State +110 deg>");
		TurnAction turnRightAction = new TurnAction("<Turn Right action>",110, true, 0.5);
		GyroAngleEvent gyroRight = new GyroAngleEvent(110, true, GyroAngleEvent.AnglePolarity.kGreaterThan);
		turnRightState.addAction(turnRightAction);
		turnRightState.addEvent(gyroRight);

		AutoState targetCalState = new AutoState("<Cal Target State 1>");
		CalibrateTargetAction calTarget = new CalibrateTargetAction("<Cal Target Action 1>", 80, 50); // desired target at x=80, y=50 (assume 160x120 img)
		CalibratedEvent calEvent1 = new CalibratedEvent(80, 50, 5, 5);
		targetCalState.addAction(calTarget);
		targetCalState.addEvent(calEvent1);

		// TODO:  Shooter state here

		AutoState idleState2 = new AutoState("<Idle State 2>");
		IdleAction deadEnd = new IdleAction("<Dead End Action>");
		idleState2.addAction(deadEnd);

		// connect each event with a state to move to
		idleState.associateNextState(driveState);
		driveState.associateNextState(turnRightState);
		turnRightState.associateNextState(targetCalState);
		targetCalState.associateNextState(idleState2);

		autoNet.addState(idleState);
		autoNet.addState(driveState);
		autoNet.addState(turnRightState);
		autoNet.addState(targetCalState);
		autoNet.addState(idleState2);

		return autoNet;
	}

	// **** DRIVE AND SHOOT RED CENTER Network *****
	// 1) be idle for a number of sec
	// 2) drive forward for a number of sec
	// 3) Turn RIGHT a number of degrees
	// 4) drive forward a number of sec
	// 5) Calibrate shooter
	// 6) Shoot at high goal
	// 7) go back to idle and stay there
	private static AutoNetwork createDriveAndShootRedCenter() {

		AutoNetwork autoNet = new AutoNetwork("<Drive and Shoot (Red Center) Network>");

		AutoState idleState = new AutoState("<Idle State 1>");
		IdleAction startIdle = new IdleAction("<Start Idle Action 1>");
		TimeEvent timer1 = new TimeEvent(0.5);  // timer event
		idleState.addAction(startIdle);
		idleState.addEvent(timer1);

		AutoState driveState = new AutoState("<Drive State 1>");
		DriveForwardAction driveForward = new DriveForwardAction("<Drive Forward Action>", 0.5, true);
		TimeEvent timer2 = new TimeEvent(1.0);  // drive forward timer event
		driveState.addAction(driveForward);
		driveState.addEvent(timer2);

		AutoState turnRightState = new AutoState("<Turn Right State +120 deg>");
		TurnAction turnRightAction = new TurnAction("<Turn Right action>",120, true, 0.5);
		GyroAngleEvent gyroRight = new GyroAngleEvent(120, true, GyroAngleEvent.AnglePolarity.kGreaterThan);
		turnRightState.addAction(turnRightAction);
		turnRightState.addEvent(gyroRight);

		AutoState targetCalState = new AutoState("<Cal Target State 1>");
		CalibrateTargetAction calTarget = new CalibrateTargetAction("<Cal Target Action 1>", 80, 40); // desired target at x=80, y=40 (assume 160x120 img)
		CalibratedEvent calEvent1 = new CalibratedEvent(80, 40, 5, 5);
		targetCalState.addAction(calTarget);
		targetCalState.addEvent(calEvent1);

		// TODO:  Shooter state here

		AutoState idleState2 = new AutoState("<Idle State 2>");
		IdleAction deadEnd = new IdleAction("<Dead End Action>");
		idleState2.addAction(deadEnd);

		// connect each event with a state to move to
		idleState.associateNextState(driveState);
		driveState.associateNextState(turnRightState);
		turnRightState.associateNextState(targetCalState);
		targetCalState.associateNextState(idleState2);

		autoNet.addState(idleState);
		autoNet.addState(driveState);
		autoNet.addState(turnRightState);
		autoNet.addState(targetCalState);
		autoNet.addState(idleState2);

		return autoNet;
	}

	// **** DRIVE AND SHOOT RED RIGHT SIDE Network *****
	// 1) be idle for a number of sec
	// 2) drive forward for a number of sec
	// 3) Turn RIGHT a number of degrees
	// 4) drive forward a number of sec
	// 5) Calibrate shooter
	// 6) Shoot at high goal
	// 7) go back to idle and stay there
	private static AutoNetwork createDriveAndShootRedRight() {

		AutoNetwork autoNet = new AutoNetwork("<Drive and Shoot (Red Right Side) Network>");

		AutoState idleState = new AutoState("<Idle State 1>");
		IdleAction startIdle = new IdleAction("<Start Idle Action 1>");
		TimeEvent timer1 = new TimeEvent(0.5);  // timer event
		idleState.addAction(startIdle);
		idleState.addEvent(timer1);

		AutoState driveState = new AutoState("<Drive State 1>");
		DriveForwardAction driveForward = new DriveForwardAction("<Drive Forward Action>", 0.5, true);
		TimeEvent timer2 = new TimeEvent(1.0);  // drive forward timer event
		driveState.addAction(driveForward);
		driveState.addEvent(timer2);

		AutoState turnRightState = new AutoState("<Turn Right State +135 deg>");
		TurnAction turnRightAction = new TurnAction("<Turn Right action>",135, true, 0.5);
		GyroAngleEvent gyroRight = new GyroAngleEvent(135, true, GyroAngleEvent.AnglePolarity.kGreaterThan);
		turnRightState.addAction(turnRightAction);
		turnRightState.addEvent(gyroRight);

		AutoState targetCalState = new AutoState("<Cal Target State 1>");
		CalibrateTargetAction calTarget = new CalibrateTargetAction("<Cal Target Action 1>", 80, 30); // desired target at x=80, y=30 (assume 160x120 img)
		CalibratedEvent calEvent1 = new CalibratedEvent(80, 30, 5, 5);
		targetCalState.addAction(calTarget);
		targetCalState.addEvent(calEvent1);

		// TODO:  Shooter state here

		AutoState idleState2 = new AutoState("<Idle State 2>");
		IdleAction deadEnd = new IdleAction("<Dead End Action>");
		idleState2.addAction(deadEnd);

		// connect each event with a state to move to
		idleState.associateNextState(driveState);
		driveState.associateNextState(turnRightState);
		turnRightState.associateNextState(targetCalState);
		targetCalState.associateNextState(idleState2);

		autoNet.addState(idleState);
		autoNet.addState(driveState);
		autoNet.addState(turnRightState);
		autoNet.addState(targetCalState);
		autoNet.addState(idleState2);

		return autoNet;
	}

	/*****************************************************************************************/
	/**** LEGACY NETWORKS **** Networks below this are for reference only and are not used ***/
	/*****************************************************************************************/

	// ****  [FOLLOW TARGET] Network - mainly for autotargeting testing - does not shoot *****
	// 1) be idle for a number of sec
	// 2) calibrate shooter continuously!  Never stop following target!  NEVER!
	private static AutoNetwork createTargetFollowerNetwork() {

		AutoNetwork autoNet = new AutoNetwork("<Target Follower Network>");

		// create states
		AutoState idleState = new AutoState("<Idle State 1>");
		IdleAction idleStart = new IdleAction("<Idle Action 1>");
		IdleAction doSomething2 = new IdleAction("<Placeholder Action 2>");
		IdleAction doSomething3 = new IdleAction("<Placeholder Action 3>");
		TimeEvent timer1 = new TimeEvent(0.5);  // timer event
		idleState.addAction(idleStart);
		idleState.addAction(doSomething2);
		idleState.addAction(doSomething3);
		idleState.addEvent(timer1);

		AutoState targetCalState = new AutoState("<Cal Target FOREVER State 1>");
		CalibrateTargetAction calTarget = new CalibrateTargetAction("<Cal Target Action 1>",80, 60);
		IdleAction doSomething4 = new IdleAction("<Placeholder Action 4>");
		IdleAction doSomething5 = new IdleAction("<Placeholder Action 5>");
		targetCalState.addAction(calTarget);
		targetCalState.addAction(doSomething4);
		targetCalState.addAction(doSomething5);

		// connect each state with a state to move to
		idleState.associateNextState(targetCalState);

		autoNet.addState(idleState);
		autoNet.addState(targetCalState);

		return autoNet;
	}

	// **** MOVE FORWARD Network - slow and steady *****
	// 1) be idle for a number of sec
	// 2) drive forward for a number of sec
	// 3) go back to idle and stay there
	private static AutoNetwork createDriveForwardNetwork_Slow() {

		AutoNetwork autoNet = new AutoNetwork("<Drive Forward Network - Slow>");

		AutoState idleState = new AutoState("<Idle State 1>");
		IdleAction startIdle = new IdleAction("<Start Idle Action 1>");
		IdleAction doSomething2 = new IdleAction("<Placeholder Action 2>");
		IdleAction doSomething3 = new IdleAction("<Placeholder Action 3>");
		TimeEvent timer1 = new TimeEvent(0.5);  // timer event
		idleState.addAction(startIdle);
		idleState.addAction(doSomething2);
		idleState.addAction(doSomething3);
		idleState.addEvent(timer1);

		AutoState driveState = new AutoState("<Drive State 1>");
		DriveForwardAction driveForward = new DriveForwardAction("<Drive Forward Action - Slow>", 0.5, true);
		IdleAction doSomething4 = new IdleAction("<Placeholder Action 4>");
		IdleAction doSomething5 = new IdleAction("<Placeholder Action 5>");
		TimeEvent timer2 = new TimeEvent(3.0);  // drive forward timer event
		driveState.addAction(driveForward);
		idleState.addAction(doSomething4);
		idleState.addAction(doSomething5);
		driveState.addEvent(timer2);

		AutoState idleState2 = new AutoState("<Idle State 2>");
		IdleAction deadEnd = new IdleAction("<Dead End Action>");
		idleState2.addAction(deadEnd);

		// connect each event with a state to move to
		idleState.associateNextState(driveState);
		driveState.associateNextState(idleState2);

		autoNet.addState(idleState);
		autoNet.addState(driveState);
		autoNet.addState(idleState2);

		return autoNet;
	}

	// **** MOVE FORWARD FOREVER Network - slow and steady *****
	// 1) be idle for a number of sec
	// 2) drive forward forever (never stop)
	private static AutoNetwork createDriveForwardForeverNetwork() {

		AutoNetwork autoNet = new AutoNetwork("<Drive Forward Network - Slow>");

		AutoState idleState = new AutoState("<Idle State 1>");
		IdleAction startIdle = new IdleAction("<Start Idle Action 1>");
		IdleAction doSomething2 = new IdleAction("<Placeholder Action 2>");
		IdleAction doSomething3 = new IdleAction("<Placeholder Action 3>");
		TimeEvent timer1 = new TimeEvent(0.5);  // timer event
		idleState.addAction(startIdle);
		idleState.addAction(doSomething2);
		idleState.addAction(doSomething3);
		idleState.addEvent(timer1);

		AutoState driveState = new AutoState("<Drive State 1>");
		DriveForwardAction driveForward = new DriveForwardAction("<Drive Forward Action - Slow>", 0.5, true);
		IdleAction doSomething4 = new IdleAction("<Placeholder Action 4>");
		IdleAction doSomething5 = new IdleAction("<Placeholder Action 5>");
		driveState.addAction(driveForward);
		idleState.addAction(doSomething4);
		idleState.addAction(doSomething5);

		// connect each event with a state to move to
		idleState.associateNextState(driveState);

		autoNet.addState(idleState);
		autoNet.addState(driveState);

		return autoNet;
	}

	// **** COMPLEX DRIVING Network - drive in L pattern and return to original spot *****
	// 1) be idle for a number of sec
	// 2) drive forward for a number of sec X
	// 3) Turn 90 deg left
	// 4) drive forward for a number of sec Y
	// 5) Turn around (180 deg right)
	// 6) drive forward for a number of sec Y
	// 7) Turn 90 deg right
	// 8) drive forward for a number of sec X
	// 9) Turn around (180 deg left)
	// 10) go back to idle and stay there
	private static AutoNetwork createComplexDrivingNetwork() {

		AutoNetwork autoNet = new AutoNetwork("<Complex Driving Network>");

		AutoState idleState = new AutoState("<Idle State 1>");
		IdleAction startIdle = new IdleAction("<Start Idle Action 1>");
		TimeEvent timer1 = new TimeEvent(0.5);  // timer event
		idleState.addAction(startIdle);
		idleState.addEvent(timer1);

		AutoState driveState1 = new AutoState("<Drive State 1>");
		DriveForwardAction driveForward1 = new DriveForwardAction("<Drive Forward Action 1>", 0.75, true);
		TimeEvent timer2 = new TimeEvent(1.5);  // drive forward timer event
		driveState1.addAction(driveForward1);
		driveState1.addEvent(timer2);

		AutoState turnLeftState = new AutoState("<Turn Left State -90 deg>");
		TurnAction turnLeftAction = new TurnAction("<Turn left action>",-90, true, 0.5);
		GyroAngleEvent gyroLeft = new GyroAngleEvent(-90, true, GyroAngleEvent.AnglePolarity.kLessThan);  // gyro angle event for -90 deg
		turnLeftState.addAction(turnLeftAction);
		turnLeftState.addEvent(gyroLeft);

		AutoState driveState2 = new AutoState("<Drive State 2>");
		DriveForwardAction driveForward2 = new DriveForwardAction("<Drive Forward Action 2>", 0.75, true);
		TimeEvent timer3 = new TimeEvent(1.5);  // drive forward timer event
		driveState2.addAction(driveForward2);
		driveState2.addEvent(timer3);

		AutoState aboutFaceRightState = new AutoState("<About Face Right State +180 deg>");
		TurnAction aboutFaceRightAction = new TurnAction("<About Face right action>",180, true, 0.5);
		GyroAngleEvent gyroAboutFaceRight = new GyroAngleEvent(180, true, GyroAngleEvent.AnglePolarity.kGreaterThan);  // gyro angle event for +180 deg
		aboutFaceRightState.addAction(aboutFaceRightAction);
		aboutFaceRightState.addEvent(gyroAboutFaceRight);

		AutoState driveState3 = new AutoState("<Drive State 3>");
		DriveForwardAction driveForward3 = new DriveForwardAction("<Drive Forward Action 3>", 0.75, true);
		TimeEvent timer4 = new TimeEvent(1.5);  // drive forward timer event
		driveState3.addAction(driveForward3);
		driveState3.addEvent(timer4);

		AutoState turnRightState = new AutoState("<Turn Right State +90 deg>");
		TurnAction turnRightAction = new TurnAction("<Turn right action>",90, true, 0.5);
		GyroAngleEvent gyroRight = new GyroAngleEvent(90, true, GyroAngleEvent.AnglePolarity.kGreaterThan);  // gyro angle event for +90 deg
		turnRightState.addAction(turnRightAction);
		turnRightState.addEvent(gyroRight);

		AutoState driveState4 = new AutoState("<Drive State 4>");
		DriveForwardAction driveForward4 = new DriveForwardAction("<Drive Forward Action 4>", 0.75, true);
		TimeEvent timer5 = new TimeEvent(1.5);  // drive forward timer event
		driveState4.addAction(driveForward4);
		driveState4.addEvent(timer5);

		AutoState aboutFaceLeftState = new AutoState("<About Face Left State -180 deg>");
		TurnAction aboutFaceLeftAction = new TurnAction("<About Face left action>",-180, true, 0.5);
		GyroAngleEvent gyroAboutFaceLeft = new GyroAngleEvent(-180, true, GyroAngleEvent.AnglePolarity.kLessThan);  // gyro angle event for -180 deg
		aboutFaceLeftState.addAction(aboutFaceLeftAction);
		aboutFaceLeftState.addEvent(gyroAboutFaceLeft);

		AutoState idleState2 = new AutoState("<Idle State 2>");
		IdleAction deadEnd = new IdleAction("<Dead End Action>");
		idleState2.addAction(deadEnd);

		// connect each event with a state to move to
		idleState.associateNextState(driveState1);
		driveState1.associateNextState(turnLeftState);
		turnLeftState.associateNextState(driveState2);
		driveState2.associateNextState(aboutFaceRightState);
		aboutFaceRightState.associateNextState(driveState3);
		driveState3.associateNextState(turnRightState);
		turnRightState.associateNextState(driveState4);
		driveState4.associateNextState(aboutFaceLeftState);
		aboutFaceLeftState.associateNextState(idleState2);

		autoNet.addState(idleState);
		autoNet.addState(driveState1);
		autoNet.addState(turnLeftState);
		autoNet.addState(driveState2);
		autoNet.addState(aboutFaceRightState);
		autoNet.addState(driveState3);
		autoNet.addState(turnRightState);
		autoNet.addState(driveState4);
		autoNet.addState(aboutFaceLeftState);
		autoNet.addState(idleState2);

		return autoNet;
	}

	// **** ABSOLUTE COMPLEX DRIVING Network - drive in L pattern and return to original spot *****
	// Uses absolute angle headings instead of relative angles between states
	// Note: this network does NOT reset the gyro!!
	//
	// 1) be idle for a number of sec
	// 2) drive forward for a number of sec X
	// 3) Turn to -90 deg heading
	// 4) drive forward for a number of sec Y
	// 5) Turn to +90 deg heading
	// 6) drive forward for a number of sec Y
	// 7) Turn to +180 deg heading
	// 8) drive forward for a number of sec X
	// 9) Turn to 0 deg heading
	// 10) go back to idle and stay there
	private static AutoNetwork createAbsoluteComplexDrivingNetwork() {

		AutoNetwork autoNet = new AutoNetwork("<Absolute Complex Driving Network>");

		AutoState idleState = new AutoState("<Idle State 1>");
		IdleAction startIdle = new IdleAction("<Start Idle Action 1>");
		TimeEvent timer1 = new TimeEvent(0.5);  // timer event
		idleState.addAction(startIdle);
		idleState.addEvent(timer1);

		AutoState driveState1 = new AutoState("<Drive State 1>");
		DriveForwardAction driveForward1 = new DriveForwardAction("<Drive Forward Action 1>", 0.75, false);
		TimeEvent timer2 = new TimeEvent(1.5);  // drive forward timer event
		driveState1.addAction(driveForward1);
		driveState1.addEvent(timer2);

		AutoState turnLeftState = new AutoState("<Turn to -90 deg>");
		TurnAction turnLeftAction = new TurnAction("<Turn to -90 deg action>",-90, false, 0.5);
		GyroAngleEvent gyroLeft = new GyroAngleEvent(-90, false, GyroAngleEvent.AnglePolarity.kLessThan);  // gyro angle event for -90 deg
		turnLeftState.addAction(turnLeftAction);
		turnLeftState.addEvent(gyroLeft);

		AutoState driveState2 = new AutoState("<Drive State 2>");
		DriveForwardAction driveForward2 = new DriveForwardAction("<Drive Forward Action 2>", 0.75, false);
		TimeEvent timer3 = new TimeEvent(1.5);  // drive forward timer event
		driveState2.addAction(driveForward2);
		driveState2.addEvent(timer3);

		AutoState aboutFaceRightState = new AutoState("<Turn to 90 deg>");
		TurnAction aboutFaceRightAction = new TurnAction("<Turn to 90 deg action>",90, false, 0.5);
		GyroAngleEvent gyroAboutFaceRight = new GyroAngleEvent(90, false, GyroAngleEvent.AnglePolarity.kGreaterThan);  // gyro angle event for +180 deg
		aboutFaceRightState.addAction(aboutFaceRightAction);
		aboutFaceRightState.addEvent(gyroAboutFaceRight);

		AutoState driveState3 = new AutoState("<Drive State 3>");
		DriveForwardAction driveForward3 = new DriveForwardAction("<Drive Forward Action 3>", 0.75, false);
		TimeEvent timer4 = new TimeEvent(1.5);  // drive forward timer event
		driveState3.addAction(driveForward3);
		driveState3.addEvent(timer4);

		AutoState turnRightState = new AutoState("<Turn to 180 deg>");
		TurnAction turnRightAction = new TurnAction("<Turn to 180 deg action>",180, false, 0.5);
		GyroAngleEvent gyroRight = new GyroAngleEvent(180, false, GyroAngleEvent.AnglePolarity.kGreaterThan);  // gyro angle event for +90 deg
		turnRightState.addAction(turnRightAction);
		turnRightState.addEvent(gyroRight);

		AutoState driveState4 = new AutoState("<Drive State 4>");
		DriveForwardAction driveForward4 = new DriveForwardAction("<Drive Forward Action 4>", 0.75, false);
		TimeEvent timer5 = new TimeEvent(1.5);  // drive forward timer event
		driveState4.addAction(driveForward4);
		driveState4.addEvent(timer5);

		AutoState aboutFaceLeftState = new AutoState("<Turn to 0 deg>");
		TurnAction aboutFaceLeftAction = new TurnAction("<Turn to 0 deg action>",0, false, 0.5);
		GyroAngleEvent gyroAboutFaceLeft = new GyroAngleEvent(0, false, GyroAngleEvent.AnglePolarity.kLessThan);  // gyro angle event for -180 deg
		aboutFaceLeftState.addAction(aboutFaceLeftAction);
		aboutFaceLeftState.addEvent(gyroAboutFaceLeft);

		AutoState idleState2 = new AutoState("<Idle State 2>");
		IdleAction deadEnd = new IdleAction("<Dead End Action>");
		idleState2.addAction(deadEnd);

		// connect each event with a state to move to
		idleState.associateNextState(driveState1);
		driveState1.associateNextState(turnLeftState);
		turnLeftState.associateNextState(driveState2);
		driveState2.associateNextState(aboutFaceRightState);
		aboutFaceRightState.associateNextState(driveState3);
		driveState3.associateNextState(turnRightState);
		turnRightState.associateNextState(driveState4);
		driveState4.associateNextState(aboutFaceLeftState);
		aboutFaceLeftState.associateNextState(idleState2);

		autoNet.addState(idleState);
		autoNet.addState(driveState1);
		autoNet.addState(turnLeftState);
		autoNet.addState(driveState2);
		autoNet.addState(aboutFaceRightState);
		autoNet.addState(driveState3);
		autoNet.addState(turnRightState);
		autoNet.addState(driveState4);
		autoNet.addState(aboutFaceLeftState);
		autoNet.addState(idleState2);

		return autoNet;
	}

	// **** Pacing Forever Network - Pace back and forth forever *****
	// This network uses absolute headings, and does NOT reset the gyro!
	//
	// 1) be idle for a number of sec
	// 2) drive forward for a number of sec
	// 3) Turn to 180 deg heading
	// 4) drive forward for a number of sec
	// 5) Turn to 0 deg heading
	// 6) Go back to state 2
	private static AutoNetwork createPacingForeverNetwork() {

		AutoNetwork autoNet = new AutoNetwork("<Pacing Forever Network>");

		AutoState idleState = new AutoState("<Idle State 1>");
		IdleAction startIdle = new IdleAction("<Start Idle Action 1>");
		TimeEvent timer1 = new TimeEvent(0.5);  // timer event
		idleState.addAction(startIdle);
		idleState.addEvent(timer1);

		AutoState driveState1 = new AutoState("<Drive State 1>");
		DriveForwardAction driveForward1 = new DriveForwardAction("<Drive Forward Action 1>", 0.5, false);
		TimeEvent timer2 = new TimeEvent(2.0);  // drive forward timer event
		driveState1.addAction(driveForward1);
		driveState1.addEvent(timer2);

		AutoState turnRightState = new AutoState("<Turn to 180 deg>");
		TurnAction turnRightAction = new TurnAction("<Turn to 180 deg action>", 180, false, 0.5);
		GyroAngleEvent gyroRight = new GyroAngleEvent(180, false, GyroAngleEvent.AnglePolarity.kGreaterThan);  // gyro angle event for -90 deg
		turnRightState.addAction(turnRightAction);
		turnRightState.addEvent(gyroRight);

		AutoState driveState2 = new AutoState("<Drive State 2>");
		DriveForwardAction driveForward2 = new DriveForwardAction("<Drive Forward Action 2>", 0.5, false);
		TimeEvent timer3 = new TimeEvent(2.0);  // drive forward timer event
		driveState2.addAction(driveForward2);
		driveState2.addEvent(timer3);

		AutoState turnLeftState = new AutoState("<Turn to 0 deg>");
		TurnAction turnLeftAction = new TurnAction("<Turn to 0 deg action>", 0, false, 0.5);
		GyroAngleEvent gyroLeft = new GyroAngleEvent(0, false, GyroAngleEvent.AnglePolarity.kLessThan);  // gyro angle event for +90 deg
		turnLeftState.addAction(turnLeftAction);
		turnLeftState.addEvent(gyroLeft);

		// connect each event with a state to move to
		// last state loops back!
		idleState.associateNextState(driveState1);
		driveState1.associateNextState(turnRightState);
		turnRightState.associateNextState(driveState2);
		driveState2.associateNextState(turnLeftState);
		turnLeftState.associateNextState(driveState1);

		autoNet.addState(idleState);
		autoNet.addState(driveState1);
		autoNet.addState(turnRightState);
		autoNet.addState(driveState2);
		autoNet.addState(turnLeftState);

		return autoNet;
	}

	// **** SPINNY Network - Spin X revolutions in one direction, pause, Spin X revolutions back *****
	// 1) be idle for a number of sec
	// 2) Turn 1080 deg left (three turns)
	// 3) be idle for a number of sec
	// 4) Turn 1080 deg right (three turns)
	// 5) go back to idle and stay there
	private static AutoNetwork createSpinnyNetwork() {

		AutoNetwork autoNet = new AutoNetwork("<Spinny Network>");

		AutoState idleState = new AutoState("<Idle State 1>");
		IdleAction startIdle = new IdleAction("<Start Idle Action 1>");
		TimeEvent timer1 = new TimeEvent(0.5);  // timer event
		idleState.addAction(startIdle);
		idleState.addEvent(timer1);

		AutoState turnLeftState = new AutoState("<Turn Left State -1080 deg>");
		TurnAction turnLeftAction = new TurnAction("<Turn left action>",-1080, true, 0.5);
		GyroAngleEvent gyroLeft = new GyroAngleEvent(-1080, true, GyroAngleEvent.AnglePolarity.kLessThan);  // gyro angle event for -90 deg
		turnLeftState.addAction(turnLeftAction);
		turnLeftState.addEvent(gyroLeft);

		AutoState idleState2 = new AutoState("<Idle State 2>");
		IdleAction pauseAction = new IdleAction("<Pause Action>");
		TimeEvent timer2 = new TimeEvent(5.0);  // timer event
		idleState2.addAction(pauseAction);
		idleState2.addEvent(timer2);

		AutoState turnRightState = new AutoState("<Turn Right State +1080 deg>");
		TurnAction turnRightAction = new TurnAction("<Turn right action>",1080, true,  0.5);
		GyroAngleEvent gyroRight = new GyroAngleEvent(1080, true, GyroAngleEvent.AnglePolarity.kGreaterThan);  // gyro angle event for +90 deg
		turnRightState.addAction(turnRightAction);
		turnRightState.addEvent(gyroRight);

		AutoState idleState3 = new AutoState("<Idle State 3>");
		IdleAction deadEnd = new IdleAction("<Dead End Action>");
		idleState3.addAction(deadEnd);

		// connect each event with a state to move to
		idleState.associateNextState(turnLeftState);
		turnLeftState.associateNextState(idleState2);
		idleState2.associateNextState(turnRightState);
		turnRightState.associateNextState(idleState3);

		autoNet.addState(idleState);
		autoNet.addState(turnLeftState);
		autoNet.addState(idleState2);
		autoNet.addState(turnRightState);
		autoNet.addState(idleState3);

		return autoNet;
	}

	// **** Test Network - does nothing except transitions states *****
	private static AutoNetwork createTestNetwork() {

		AutoNetwork autoNet = new AutoNetwork("<Test Network>");

		AutoState idleState = new AutoState("<Idle State 1>");
		IdleAction startIdle = new IdleAction("<Start Idle Action 1>");
		IdleAction doSomething2 = new IdleAction("<Placeholder Action 2>");
		IdleAction doSomething3 = new IdleAction("<Placeholder Action 3>");
		TimeEvent timer1 = new TimeEvent(10.0);  // timer event
		idleState.addAction(startIdle);
		idleState.addAction(doSomething2);
		idleState.addAction(doSomething3);
		idleState.addEvent(timer1);

		AutoState idleState2 = new AutoState("<Idle State 2>");
		IdleAction startIdle2 = new IdleAction("<Start Idle Action 2>");
		IdleAction doSomething4 = new IdleAction("<Placeholder Action 4>");
		IdleAction doSomething5 = new IdleAction("<Placeholder Action 5>");
		TimeEvent timer2 = new TimeEvent(10.0);  // timer event
		idleState2.addAction(startIdle2);
		idleState2.addAction(doSomething4);
		idleState2.addAction(doSomething5);
		idleState2.addEvent(timer2);

		AutoState idleState3 = new AutoState("<Idle State 3>");
		IdleAction startIdle3 = new IdleAction("<Start Idle Action 3>");
		IdleAction doSomething6 = new IdleAction("<Placeholder Action 6>");
		IdleAction doSomething7 = new IdleAction("<Placeholder Action 7>");
		TimeEvent timer3 = new TimeEvent(10.0);  // timer event
		idleState3.addAction(startIdle3);
		idleState3.addAction(doSomething6);
		idleState3.addAction(doSomething7);
		idleState3.addEvent(timer3);

		AutoState idleState4 = new AutoState("<Idle State 4>");
		IdleAction deadEnd = new IdleAction("<Dead End Action>");
		idleState4.addAction(deadEnd);

		// connect each event with a state to move to
		idleState.associateNextState(idleState2);
		idleState2.associateNextState(idleState3);
		idleState3.associateNextState(idleState4);

		autoNet.addState(idleState);
		autoNet.addState(idleState2);
		autoNet.addState(idleState3);
		autoNet.addState(idleState4);

		return autoNet;
	}

}


WASHINGTON, D.C. & LOS ANGELES—A team of researchers from Children's National Health System and the University of California, Los Angeles (UCLA) led by Dr. Eric Vilain have utilized Bionano Genomics' Irys and Saphyr systems to identify pathogenic structural variants indicative of genetic diseases. Testing the systems on patients with Duchenne muscular dystrophy (DMD), they found that the mapping allowed by using Bionano technology presented a faster, more cost-effective and more accurate diagnosis than existing methods.
Bionano's Irys and Saphyr systems are whole-genome analysis tools, designed to better understand and map genomic structures. Saphyr is an optical mapping solution that provides rapid, high-throughput, long-range genome mapping capable of detecting structural variations with extreme sensitivity, while Irys offers whole-genome maps at single-molecule resolution. In the UCLA study, Vilain's team used both systems to identify pathogenic structural variants in a series of patients diagnosed with DMD, which is caused by large deletions, insertions and inversions disrupting the X-linked dystrophin gene. DMD is a severe degenerative muscle disorder mostly affecting boys, for which there is currently no cure.
Vilain showed that a single Bionano test can at times replace or outperform as many as four different tests. This work also illustrates how Bionano provides translational researchers with a tool that sees genome variations that other technologies miss. For example, one study subject had large structural variants that interfered with proper functioning of the X-linked dystrophin gene. He had been diagnosed with DMD through an invasive muscle biopsy, after chromosomal microarray, MLPA, PCR sequencing of all 79 exons and exome sequencing all failed to detect the pathogenic inversion.
The study authors state in the publication that Bionano mapping "has the capacity to replace both MLPA and chromosomal microarrays in the clinical setting." MLPA is a probe-based assay to detect the deletion or duplication of specific loci in the genome. For this study, the authors cite as key advantages over MLPA the ability of Bionano technology to provide order and orientation of structural variants and the ability to detect these variants genome-wide.
According to Holmlin, Vilain's discovery suggests more uses for the Irys and Saphyr systems will follow. They have already been tested on hematological malignancies, and translational research is underway in prostate cancer studies as well. Because cancer is a disease of structural variations, says Holmlin, the technologies should be effective in solid tumors, as well as other oncological practices. While the mapping capacity may not lead directly to a cure, its efficacy and specificity can be utilized to guide trials that aim to restore proper function when molecular variations are present. As more early adopters stretch the capacity of the Bionano systems, new reagents, software applications, assays and other products will be added to pipeline.


CLERMONT, Fla. (blugolds.com) - The University of Wisconsin-Eau Claire softball team kicked off their Spring Break trip to the Sunshine State with a pair of victories on Friday. In the trip's PFX Games opener, the Blugolds topped Pomona-Pitzer, 6-4. They followed that up with a 5-0 shutout over Albright in the nightcap.
The key to the first game's win was a big third inning in which the Blugolds scored four runs. After trailing by a run through two innings of play, Eau Claire responded with the four-spot in the top of the third via three singles, a pair of walks, and a Pomona-Pitzer error. In the bottom half, the Blugolds' lead was cut to one. Both teams added a run in the fifth, and Eau Claire picked up an insurance run in the seventh to seal the win.
Sarah Peka (So.-Chanhassen, MN/Minnetonka) continued her solid start to the year with another complete game effort. The sophomore improved her record to 4-0 through four games started. Despite allowing eleven hits to the Sagehens and giving up four earned runs, Peka minimized the damage and kept the Blugolds ahead of the opposition with four strikeouts along the way.
Eau Claire's offense produced eight hits in the win, including 2-for-4 performances from their first two hitters in the lineup, Katie Rongstad (So.-Slinger, WI) and Gretchen Arneson (So.-Chippewa Falls, WI/Chi-Hi).
In game two on the day, the Eau Claire pitching proved to be the story. In just her second outing for the Blugolds, freshman pitcher Morgan Sivak (Oconomowoc, WI) blanked Albright to the tune of seven strikeouts over seven innings of work. Sivak gave up seven hits, but none led to any runs from the Lions.
Rongstad added another pair of base-hits, as did Cheyenne Johnson (So.-Poplar, WI/Northwestern), Katelyn Yute (Fr.-North Prairie, WI/Kettle Moraine), and Carlie Christensen (Sr.-Ellsworth, WI/River Falls) to account for Eau Claire's eight hits. Yute drove in three runs, and Johnson finished with a pair of RBIs.
Due up next for the Blugolds on their PFX Games slate is a 10:30 a.m. (CST) start time on Saturday against Transylvania followed by an afternoon contest against MCLA at 1:00 p.m. (CST).


text:
My best friend and I are pretty different—politically, theologically, and culturally. Had we not known each other since high school, we'd probably not have run into each other. But because we do know each other so well, we get to ask each other difficult political questions from across this wide and growing chasm that defines US political life today. Then, we can give earnest answers in a context of mutual trust and respect.
Leveraging this relationship, she opened a dialog around immigration policy—for my money, today's touchiest political issue.
She had found a study by a thinktank (more on them later) that examined immigrant use of public benefits, and (being a fiscal conservative) she wanted to know how she could approach this topic without being accused of racism. Isn't there a limit to how much we should support people who aren't even from here? Shouldn't we be working harder to care for our current under-privileged as a higher priority? (She sincerely means that latter part. Again: context of mutual trust and respect.)
And what does the left actually want our immigration policy to look like? No wall, no separating families (she agrees on both counts), but what do we affirmatively support?
What follows is an edited version of my response. I answered the "what do you want" question last with my friend, but I've put it first here, and you'll see more about why I did that below.
I. What immigration policy does "The Left" want?
Well, that depends on whom you ask, because there is no "the left" that speaks with one voice. (In contrast, Fox & Friends is practically dictating national policy at this point.)
Are there leftists who want no borders or want to move in that direction? Sure. You know what other wing of public intellectuals often pushes for this? Libertarians. Pure laissez faire requires not only the free movement of capital and goods, but also people.
Most leftists don't want truly unlimited immigration (no border, no screening, etc.), though many of us would support background checks, border inspections, an orderly immigration system, and little more.
A tick to the center from this position, I think the bulk of the institutional left and lefty intellectuals like me would probably be willing to sign on to something like the following:
A. Official recognition of everyone who's built a life here for a substantial period of time, without running into the criminal justice system.
That means legal residency, a path to citizenship, and all the protections that come with it such as minimum wage, workplace protections, and the ability to file a police report when you're the victim or witness of a crime.
Imagine living with none of that. Even if you came here as an adult, that's a pretty raw deal from a country built by immigrants. If you came here as a kid—if you have to live under these terms, in the only country you know as home—that's unconscionable.
B. Larger and more rational allowances for legal immigrants.
Family ties are a pretty legitimate factor in deciding who gets here, but so is economic demand for services—and not just in the professional classes. Unskilled migrants come here because there's work for them to do, and any policy that tries to ignore this reality is just misguided. In terms of skilled labor, some sectors are positively starving for talent.
I've personally known people who earned US graduate degrees and were then told they had to leave after their student visas ran out. Selfishly, we should be trying to keep these people! And in high-demand specialties, there's no way we can produce enough local talent to meet the demand.
Our immigration quotas are set too low.
Imagine a stretch of interstate where the speed limit were suddenly reduced to 30 mph. Is the problem that people would still go 75 (or drive like maniacs on the side streets to compensate), or that the speed limit is far too low? Laws aren't inherently right or moral just by virtue of being the law. They should be rational and tethered to the actual needs of the community. They should punish the dangerously deviant, not the ordinary. In sectors like farming and construction, undocumented labor is awfully ordinary (akin to driving 75 anyway). In sectors where undocumented work isn't feasible, jobs are just sitting unfilled, and the side-street-like workarounds like outsourcing aren't helping us, either.
Apply the paradigm of setting speed limits to the question of immigration volume. Not unlimited, but basically enough to do the job so that illegal immigration isn't generally necessary. This could bake in a bit of give and take as local supply and demand evolves for specific occupations. It could also allow families to reunite in the open, but at a moderate enough pace to allow local infrastructure to evolve accordingly.
Then, think about the resources this frees up! Imagine if the INS, ICE, and DHS more broadly could focus more squarely on stopping human and drug trafficking and keeping out convicted criminals. Imagine these agencies providing humanizing and helpful services to otherwise law-abiding would-be residents.
That would do far more to promote the safety and well-being of our nation than the vast majority of enforcement activities today.
C. Border policy that's actually based on security needs and rational analysis of empirical evidence.
The wall is a joke. Every dollar spent on the wall is many times too expensive relative to other ways to get the same level of increased enforcement. Most of the border is just unpopulated desert, and for the parts where fencing makes sense, there are generally fences already—and they tend to be in poor repair. A wall would still need to be patrolled, maintained, and repaired. Everyone who's studied this seriously—and even Republicans elected from border regions—tends to conclude that a wall is a terrible use of resources. Invest more money elsewhere.
Or actually don't, because unauthorized immigration is at its lowest level in ten years. This whole "crisis" is so manufactured it might as well say "Hasbro" on the bottom. The only thing that's changed is the political rhetoric.
Sure, we could definitely use updating and repair of some of the physical plant we already have. To the extent that outdated or worn-out gates, bridges, offices, and so on slow down commerce? That's a real problem. As far as ramping up enforcement to save lives, though? Our safety would be more quickly improved by investing in infrastructure that has nothing to do with the border—crumbling bridges, post-apocalyptic roads, and so on.
D. Deflate and challenge the racial views and assumptions that animate this whole debate.
The truth is that we need immigrants. Overall, our country's native population isn't even reproducing at replacement level. Without immigration, Japan's grey-haired present is our future. That's not a good thing, fiscally speaking.
Want to talk about an expensive group to keep on the dole? Let's talk about retirees! Boomers on Social Security, Medicare, and Medicaid are going to be FAR more expensive than the subset of immigrant children on SNAP, free school meals, and state healthcare. And as Boomers continue to retire, we're approaching an era where, without a continued influx of working-age adults being part of the legal economy (including Social Security and Medicare taxes), our budget is toast.
Even on a static basis, the only credible answer to "Is immigration a net negative or positive?" is, "Depends on how you measure, but close to break-even overall." This is true even for measures that we imagine would be highly sensitive to unskilled immigration, like wages among high-school dropouts.
But on a dynamic/prospective basis, the more today's immigrant kids can join the successful working population of tomorrow, the better off we'll be.
There is little rational reason to fear immigration—and I'll tackle the irrational sources of fear in a second. But there are studies and statistics thrown out to justify anti-immigrant positions. Let's look at one example of how this can work.
II. Don't take "the numbers" as a given. Read statistics skeptically.
My friend started the discussion with a link to a study (which I will not directly link here). The author claims that immigrant households use public assistance at a higher rate than native-born households.
Authored by the Center for Immigration Studies, the study is just methodologically wrong, but we shouldn't find this that surprising. To say that CIS has an axe to grind is, um, an understatement. By 2016, the Southern Poverty Law Center had designated them a hate group. They explain:
Founded in 1985 by John Tanton, the Center for Immigration Studies (CIS) has gone on to become the go-to think tank for the anti-immigrant movement with its reports and staffers often cited by media and anti-immigrant politicians. CIS's much-touted tagline is "low immigration, pro-immigrant," but the organization has a decades-long history of circulating racist writers, while also associating with white nationalists.
The SPLC goes on to explain that they have a history of torturing data to make incorrect conclusions look right on first glance. They also provide quite extensive evidence to back the claim that they have a racist agenda, racist rhetoric, and plenty of racist connections.
We shouldn't be surprised that CIS used dodgy research methods to inflate these numbers to reach bogus conclusions. CATO (which is explicitly libertarian but more methodologically honest and, well, not a hate group) tears them to pieces.
See, for instance, this link: Center for Immigration Studies Overstates Immigrant, Non-Citizen, and Native Welfare Use. At the end of the first paragraph, Alex Nowrasteh explains, "For years, CIS and I have debated this topic and this blog is yet another installment. Please follow these links to read the previous installments."
Each of the last eight words is a different link to another post where the author tears the CIS reports into little pieces. He's awfully convincing. In particular, see: Poor Immigrants Use Public Benefits at a Lower Rate than Poor Native-Born Citizens. If you control for other factors (especially poverty) and use the right unit of analysis (individuals instead of families), the CIS claims just don't hold any water.
So a hate group think tank cooked the numbers to make immigrants look bad. Who cares?
The fact that my friend (who's hardly tripping over white papers in her daily life) comes to me with this question illustrates a bigger problem: we take bigots seriously because they always come with a figleaf covering their bigotry. In this case, "objective" data is the fig leaf, but there are many. "Make America Great Again" is surely the most important fig leaf of this century, so far.
You might ask: What role do race, identity, and culture play in the immigration debate? I also come bearing data, but I've tortured nothing. Specifically:
III. There is a relationship between racial and cultural attitudes and immigration views
I'm not saying that anyone who wants tighter immigration policy holds this belief due to racial animus or even hostility toward the generic outsider. The two (policy and racial/cultural attitudes) are not inextricably linked.
However, there is substantial overlap, and that's a key fact in understanding this debate. To illustrate this, let's look at the intersection of where people in a Pew Research Center survey from September 2018 line up on two questions. What I'm about to say is not thorough or precise enough to publish in a journal, but it's an original analysis and only a slight oversimplification of a properly scholarly conclusion.
First, which statement better describes your views?
America's openness to people from all over the world is essential to who we are as a nation (68% overall), or
If America is too open to people from all over the world, we risk losing our identity as a nation (26%).
Surveying racial and cultural attitudes is difficult. Even people who marched alongside Nazi flags in Charlottesville will tell you, "I'm not racist." They're just supporters of an agenda of preserving the current racial and cultural heritage of the USA. Which is approximately what the roughly 26% of Americans who would choose Answer B above are saying.
Among questions that people will actually answer honestly (and even here there's surely some social pressure toward answer A), this is a pretty good proxy for racial attitudes—especially toward Hispanics, who (inaccurately) are generally perceived as the vast majority of immigrants.
At best, this belief is racism-adjacent. Doubt it? Consider the widely-understood racial and cultural direction of our country—less white, more multicultural. Everyone knows that's coming. Even people who've never been on a college campus know this. If you oppose that, you're saying that you want our country to be whiter and less culturally diverse. That's not exactly racism in its purest form, but it's starting to sound an awful lot like racism, and it's an answer that one in four US adults will give explicitly to a stranger.
The second question is: what do you think should be the priority for immigration policy?
Better border security and stronger enforcement of our immigration laws (19%),
Creating a way for immigrants already here illegally to become citizens if they meet certain requirements (33%), or
Both should be given equal priority (46%).
Here's a table of everyone who answered both questions as instructed:
A. Openness B. Preserve Identity Totals
1. Enforcement 116 204 320
2. Citizenship 471 56 527
3. Both 567 210 777
Totals 1154 470 1624
The odds that there's actually no relationship between these questions, and the table came out this way due to random chance? One in (ten to the power of 60). Tom Brady is more likely to kick 13 field goals during the Super Bowl. You're more likely to come out of the grocery store and find a winning PowerBall ticket under your windshield wiper. Donald Trump is more likely to close his Twitter account.
Now look at that first row! Those who support stronger enforcement are 64% in favor of preserving our (whiter) current national identity—even though such identity preservation is supported by just 20% of the rest of the sample. In the social sciences, that's considered a very substantial relationship.
I will grant that there are people who support stronger immigration for other reasons. I've even met nonwhite adults who are the children of illegal immigrants and still support more enforcement because they hold the (generally inaccurate, but common) belief that new immigrants are a net negative for our economy (see above). Even though they both embody and actively celebrate our nation's growing diversity.
But a major chunk of the "more enforcement" crowd are clearly motivated at least in part by racial resentment and the desire to preserve the majority status for whites—even if they'll gladly tell you that they're not racist.
IV. Don't let racists frame the debate. Ask different questions.
The whole immigration "crisis" is a fiction created by a racist president (look up his role in the Central Park 5 case and his response to their acquittals). A president who ran on racial animus and whose entire campaign was built on blaming Hispanics (and other disfavored groups, but especially Hispanics) for "our" (white people's) economic problems. Even if you're anti-racist (which is different than, and vastly preferable to, being "not racist"), you help the racists if you let them frame the debate.
And when you start from the premise of making immigrants justify themselves, you feed racism, regardless of your intentions.
Letting racists dictate the agenda and answering questions as they frame them is something many people need to rethink—my friend, probably most Americans, the mainstream media.
If someone (Trump) or an organization (CIS) is demonstrably animated in substantial part by racial animus, those of us who are not the direct targets of this racism who still want a less-racist world owe it to those who are under attack to re-evaluate whether and how we let the racists ask the questions.
Like my friend, many are legitimately concerned about tax rates and how government spends your tax dollars. But why not ask about the F-35, a single military project with a price tag of roughly $1 trillion? Why are so many so-called fiscal conservatives willing to back military adventures abroad that, at best, have an uncertain chance to make some marginal improvement in our national security? The children of immigrants on public assistance are a tiny slice of the national budgetary pie compared to Raytheon and Lockheed. In one case, spending money surely saves lives—and in the other, spending money leads to major loss of life, livelihood, and long-term well-being.
Even when it comes to abuse of public assistance, why is this so often brought up in contexts with obvious racial connotations, such as immigration policy or urban policy?
The majority of public assistance recipients are white. There is a substantial culture of abusing public assistance in white communities. Read JD Vance's excellent book, Hillbilly Elegy, or listen to the audiobook. He documents how Appalachia, and parts of the country that attracted substantial numbers from Appalachia (in particular, parts of the industrial Midwest), have countless white folks who never work, soak up public benefits, and have the gall to complain about moochers who suck off the public teat. (To be clear, I'm sure this is also true for many white folks with no Appalachian roots, and for others who are not white, but I bet there is a nontrivial statistical relationship in the direction of Vance's qualitative observations.)
This is surely a big part of Trump's base, actually. I'll bet there are enough white public assistance beneficiaries, who resent minority receipt of public assistance, and voted for Trump in swing states (esp. the industrial Midwest), such that Trump couldn't have won without their support. I'll bet a lot of THEM have Black and Hispanic friends and even family and see no contradiction in any of this. (My brother-in-law bought a custom-made "45" hat after Trump won, but he couldn't have been nicer when I started dating a Hispanic Jew.)
Pointing out other public waste here isn't just "whataboutism" (which is an important thing to be able to spot and not a legitimate response to a genuine argument). If a family with at least some undocumented immigrants claims public benefits, it's generally on behalf of legal residents or citizens, and there's generally a legitimate need there.
Immigrant adults are more likely to work than non-immigrant adults. They also can't just show up and collect public assistance because they're generally not eligible. Even legal immigrants (which, by the way, is roughly 3/4 of immigrants) have time-delayed or limited access to most benefits. So: any effort to limit benefits to the families of immigrants generally means harming legitimately eligible people in genuine need.
In particular, if we follow CIS's lead and use the category of "immigrant family" to regulate who can receive benefits, it means taking food out of eligible children's mouths, denying them healthcare, and so on. The public expense is not trivial, sure, but it's a modest part of our national budget, and trimming it at immigrants' expense specifically would harm some of the very neediest in our society. Meanwhile, folks who don't need it as much—like defense contractors—are, in my view, more legitimate targets for government thrift. They just also have more political clout.
V. We need more immigration, more normalcy in the process, and more allies
So if someone asks you, "How can we absorb all these new people?!", question the ideological and even racial motives of the people who got the questioner to this point—to whatever degree your relationship can sustain, in a context of mutual respect. Odds are, there's someone with dodgy racial politics and a snake oil stand not too far behind.
Even millions of Trump voters have come to see the lies and hate for what they are. Encourage this, even if your friends and family will never fully sign on to the above positions. They might not be good anti-racists yet, but this is a good opportunity to start that shift.
Rationally, we should be asking how we can live without immigrants. European countries are trying to siphon off our college kids for a reason: they also need more young people! If the equivalent of a comparable expense up front gives us a citizen who's loyal to this country (how many American kids will stay in Germany after college?) and can succeed up and down the economy (we'll still need plumbers and physicians' assistants, too), that's actually a net win.
Today's Spanish and Mandarin and Hindi speakers (India and China now send more migrants than Mexico) will continue to annoy crotchety locals. Most of these had ancestors of Irish, German, Polish, and the other disfavored ethnicities of yesteryear (Steven Miller, anyone?), and yet they see no irony when they tell today's immigrants to "SPEAK ENGLISH!!!"
Some of these same nativists—especially the Italian-Americans among them—actually complain when they find out that New York's Little Italy is now virtually free of people who prefer Italian, and they still don't see the irony. Fifty or 100 years from now, it's easy to imagine a portion of mostly-integrated Hispanics saying the same thing to another wave of immigrants—and maybe even grousing that practically nobody in The Bronx speaks Spanish anymore.
All the while, immigrants will continue to become Americans, whether officially recognized or forced to live on the margins. Their kids will lose their accents, and their grandkids will lose the ability to speak the family's previous native tongue, without any intervention on the state's part. Our country will continue to evolve, and we'll be better off for it. The more we celebrate that future, and the more we integrate everyone into the legal and legitimized parts of society, the better off our country will be.
Even the white parts.
This entry was posted in Uncategorized and tagged immigration, politics, race by Bill Herman. Bookmark the permalink.

redpajama_set_name: RedPajamaCommonCrawl


"What do we have here?" he said, in a low whisper. Muffled sounds of constraint came from the corner. There was another person in the room, tied to a chair. The person in the chair tried to motion a sign to the man in the overcoat that he shouldn't listen to the tape recorder. He flirted with the idea. He thought about burning it and throwing it away; he was afraid of its content. The man in the overcoat knew once he started there was no going back. He pressed the play button anyway. Static and buzzing noises came out of the tape recorder, at first. It sounded like an analog radio, trying to tune into to a station. Then a distinct sound. A woman's voice.
A long sigh was made. It sounded like a woman trying to gather herself.
My name is Joanna Smith... "sniff". Today is June 7th of 2012. I am 36 years, and I have a message that I need to tell. If you are listening to this now, then I am already dead, and hopefully in a better place than the world I made for myself. The main reason why I am making this; is to prevent anyone from making a mistake that I did. And secondly, I hope that someone smart enough will find this tape recorder, and lock up the monster that killed me. Who happens to be the man I married.
The day I met him, he was so different. I wish he would have stayed that way, but I guess I never saw who he really was. I'm getting upset just thinking about it. I am a strong educated woman, and he saw right through me. He knew exactly what I wanted, and gave me the fantasy I dreamed about.
I met him at a coffee shop right next to the forest preserve, Starbucks coffee. I wanted a break from the office; I wanted to get away from all the paper work that came piling in. So I went to get myself a nice cup of coffee, then I was going to go for a little stroll, to clear my head. All my life I have worked so hard to get through school; and I finally did, quite quickly too. An unsocial life was the price I paid; all my friends I made through school were only for my benefit. My friendships were held together by strands of convenience, and once the convenience went away, they fell apart with them. I would be lying if I said, I didn't see that coming. At first I thought this was more beneficial, but then I slowly started to notice a gap inside of me. This hole in my heart. I wanted more; I started to want a family, a little girl I could spend time teaching her life lessons, as I combed her hair in the mirror. I guess I did get want I wanted.
When I saw him there, standing in front of me in line. He was a tall man, I saw him talking to the girl at the counter in the coffee shop. She was laughing at whatever he was saying. He smiled at her, and she smiled back. I wanted him then. He was so confident the way he talked, he knew exactly what he wanted. He turned around after he was done purchasing his coffee. When he faced me, I quickly glanced away, trying to pretend like I wasn't a little mosquito flirting with a blue light. He must have known what I was doing. He took a couple of purposeful strides in my direction. Watching him peripherally, my eyes grew wide. He was walking right towards me, I tried my hardest not to look like a girl with a high school crush.
"Hey, are you working for FLC?" he asked me.
"Um, why yes, how do you know?" I replied back.
"I saw you walking from one of the business meetings. I'm sorry my name is Jacob Ramsey" he said, while sticking he hand to greet me. As I was shaking his hand, I couldn't help but notice he smelled like the same brand of after shave my father wore. It kind of brought me back home. The suite he was wearing made me never questioned if he was a business man or not. The way he greeted must have been from one of his sales pitches. I was sold. This was the first time I ever looked at his face, his smile was so warm. Even if I didn't want to, I couldn't help but smile back. I started to panic. How long have I been staring at him without replying? I thought.
"Ugh, I'm so sorry, I'm Joanna Smith, I can't help it. I came here to get my mind off work. I'm sorry if I seem a little frazzled" I said. And yep, I said frazzled, I felt so stupid for saying it, but it was the only word that came out. I was panicking.
"Yea, I'm a little out of my head too, you should come and sit down with me. I'm on a little break myself. I promise I won't mention anything work related unless you do," he said. It didn't seem harmful.
"Yea, sure," I said, trying my hardest not to sound desperate.
I can't tell you how long we sat there. And I can't remember a time when I laughed so hard. It felt like everything that came out of Jacob's mouth was funnier than the last thing he said. I was more nervous than anything, and my nervousness caused me to laugh harder than usual. I didn't have a problem with that. It's been awhile since I laughed that hard. We exchanged numbers of course. My company at the time was helping his get their feet off the ground. We rarely saw each other at work, and when we did we both didn't act like we knew each other, except for the occasional wink he would send my way. Once his company was up and running that was the last time I saw him at work. We saw each other for another four months, he would show up to my work with flowers, and the thoughtful cards on days like valentine's day, and some days would show up for no reason at all. Those days were my favorite.
He would tell me things like, "We have so much in common," Or "I could never live with someone else beside you, anything else would be settling". Then he finally said it. The "L" word. He looked at me with such intense eyes; when it rolled off his lips so eloquently. I didn't say anything, at first. I sat there closed my eyes and let it sink in. I haven't heard that word directed toward me since my mother was alive. It felt too good to hear it again. The word held so much weight when he said it. It nearly knocked me off my feet. Then I said it back. It was hard for me to say the word, but I needed to let him know that I cared for him.
After the meeting in the coffee shop, we got married six months later. Then six months after that I took maternity leave from work. It was a baby girl. I can't tell you how many times I thanked God for her. She was so beautiful. She looked just like me, except for one thing. One thing she took from Jacob. His eyes. Her eyes were so much more beautiful than mine. Two little "blue lagoons," I would call them. They were so full of life. When I was feeding her, I would catch myself just lost in them. She was so gorgeous. I named her Elizabeth.
After Liz was born, Jacob lost his job, or got laid off. I don't know if he actually worked for that company at all. He just stayed at the house, sitting in the four season room reading magazines all day. He started to change. Jacob was becoming something different, a person I didn't know. I had to start going back to work. We weren't getting any sort of income. But what really started to scare me about Jacob was, he never looked at Elizabeth. Not once. She was inside her car seat in the house. I was trying to grab a couple of things before I put her into the car, and Liz started to cry horrifically. I watched Jacob eating a bowl of cereal right next to her.
"SHUT UP!" he yelled at her. I couldn't believe it. She just wanted somebody to hold her. He wouldn't even do that. Something was wrong with Jacob. So, I hired Raine Meyer as a baby sitter for when I went to work. I asked her what she thought of Jacob.
"He's really creepy, I don't know how long I can do this. He just really creeps me out," She said. But she stayed with her until she was in pre-school. I asked Jacob If he would take her to pre-school since he was just sitting around the house.
"No, I starting an online website with one of my buddies, I'm going to be a stay at home dad," Jacob said.
It wasn't till this year, when Liz was starting the first grade, when I asked Jacob to leave the house. I couldn't live like this anymore. I didn't want Liz growing up and figure out who her dad really is. He was sitting in his chair when I asked him.
"Jacob, you need to leave the house," I told him. He just sat there and acted like he didn't notice me at first.
"Jacob, If you don't leave the house I'll call.... I'm going to call somebody" I restated. He was sitting in the chair facing the other way. He carefully got up and turned to look at me.
"You don't mean that sweaty?" he said, while squinting his eyes, trying his best to look sincere. He did look sincere, but I have lived with him too long. I knew what he really wanted. I couldn't believe how long I let him live off me like this. I lost everything I felt for him finally. I didn't need a formal break-up. I wanted him to disappear.
"Baby c'mon, where am I going to go, you can't just kick me out like this," He stated, at the end of the statement a lump started to develop in his throat. His bottom lip fluttered, holding back his coming tears. I knew what kind of tears he was making, not the genuine kind. He was so good at making himself seem authentic. I am still amazed at what he can do to people. I just stood there and stared at him, waiting for his next move. He stood up, and started walking towards the hallway.
"Joanna please don't do this to me, I'm your husband" he said.
"I don't want you to be my husband anymore, please just leave, and never come back.... please just leave Jacob," I told him.
"Mommy! don't make Daddy leave!" she cried out. I dropped my cell on the floor. The glass on it shattered. My heart stopped. I couldn't believe he was using Elizabeth. I was done after that, I wanted to kill him. I've never wanted to even harm anybody before.
Static, and buzzing noises started to play on the tape recorder.
The man in the overcoat was still sitting at same table. He paused for a moment, to gather himself. Then he walked over to the person in the corner, who was still muffling. He pulled the bag off the person's head. Sandy unkempt locks of hair fell down on to her shoulders.
"So, Joanna. You think I'm going to kill you?" Jacob said, while leaning down to her head level. All Joanna could make were muffling sounds, because of the duck tape that sealed her lips. Jacob wanted to hear what she had to say. So he grabbed one side of the tape, and began to slowly peel it from one side to the other. She was so weak, salt marks lined vertically from her eyes. Joanna was so dehydrated her body couldn't cry anymore.
"Please! You're the one that did this to us!" Jacob replied. He slapped her across the face, knocking her and the chair on its side. The chair busted, but Joanna did her best not to let Jacob know what happened.
A sound echoed from the front door on the main floor. Jacob quickly turned around to face the stairs. His eyes widened, as the anxiety in him started to increase. Foot steps from the floor above made their way across the basement ceiling. Two sets of footsteps, one was more like quiet shuffling.
"Mommy!" it was Liz's voice. She came back with her Raine to check to see if they got back from "vacation". That's what Jacob told them anyway. After hearing the familiar voice, Jacob's eyes started to squint. Then his memorable smile started to split his face. Jacob walked up the stairs slowly, making sure every step was unheard.
"Hey Jacob, how was your little vacation?" Raine asked. Jacob didn't reply. He just looked at the both of them, and started to grab for little Liz. Then a bat collided on the back of Jacob's head. He fell unconsciously to the floor; and Joanna came into view behind him, holding baseball bat in both hands. She gave the swing everything she had, everything. The swing exhausted all of Joanna's energy. She Fell to the floor, and collapsed.


text:
mahoningvalleylanes.com
Quick Answer: What Is The Largest IT Company In The World?
What are the 5 largest industries in the world?
Is Alibaba bigger than Amazon?
Who is largest employer in India?
Which is richest company in India?
Which is the No 1 company in India?
What companies rule the world?
Which is the No 1 IT company in world?
Is Google is a IT company?
Why Google is called Google?
How can I be a billionaire?
Who owns the Internet now?
Which IT company has highest number of employees?
What is the richest online company?
What is Google's full name?
What are the 10 biggest companies in the world?
Is Google owned by China?
What company is the richest?
Global Biggest Industries by Revenue in 2020Global Oil & Gas Exploration & Production.
Global Commercial Real Estate.
Global Car & Automobile Sales.
Global Car & Automobile Manufacturing.
Global Direct General Insurance Carriers.
Global Commercial Banks.
Global Auto Parts & Accessories Manufacturing.
Global Tourism.
$1,541,0B.More items….
While Amazon is the larger of the two companies by a significant margin, both companies have quite similar revenue streams. When comparing Commerce as well as Cloud revenues, Amazon's revenues are nearly 15x that of Alibaba's. However, Alibaba's advertising revenues are quite comparable to that of Amazon's.
Bengaluru-based Quess Corp is India's largest private sector employer, according to a report by The Times of India. The staffing solutions company has 3.85 lakh employees on its roster of employees and associates, as per the latest quarterly filing viewed by the paper.
India's largest corporations Reliance Industries. 615,854.00. Indian Oil Corporation. 493,932.99. Oil & Natural Gas Corporation. 405,243.31. State Bank of India. 368,010.65. Bharat Petroleum Corporation. 288,974.97. Tata Motors. 261,875.55. Rajesh Exports. 195,607.23. Tata Consultancy Services. 161,541.00.More items…
2019 Fortune listRankNameIndustry1Indian Oil CorporationOil and gas
Read on to find out the 50 American companies that rule the world…Twitter – $2.44 billion (£1.89bn) … Groupon – $2.84 billion (£2.20bn) … InterActiveCorp (IAC) – $3.3 billion (£2.6bn) … Airbnb – $3.5 billion (£2.7bn) … Mattel – $4.88 billion (£3.78bn) … Yum! … Xerox – $10.3 billion (£7.98bn) … Netflix – $11.69 billion (£9bn)More items…•
1. Microsoft Corporation. Microsoft Corporation is headquartered in Redmond, Washington, and is one of the largest companies in the world. The products like Microsoft Windows, Microsoft Office, and Internet Explorer etc is being used by almost by almost every professional in the world.
Google LLC is an American multinational technology company that specializes in Internet-related services and products, which include online advertising technologies, a search engine, cloud computing, software, and hardware.
The name of Google is derived from the number googol, which is equal to the number 1 followed by 100 zeros (1 x 10^100). Backrub was the original name for the search engine until Sergey Brin and Larry Page rebranded the company as Google, Inc.
Keys to Becoming a BillionaireListen to Your Own Drummer. Find your own niche, and don't try to copy what has worked for other people. … Dream Big. … Be Totally Committed to Success. … Don't Be Afraid to Fail. … Pay Attention to the Details. … Build a Trustworthy Team of Advisors and Partners. … Never Forget the Customer.
No single person or organisation controls the internet in its entirety. Like the global telephone network, no one individual, company or government can lay claim to the whole thing. However, lots of individuals, companies and governments own certain bits of it.
Two of the largest companies in the world based on the number of people employed are Walmart Stores and China National Petroleum, providing jobs for 2.2 million and 1.38 million people, respectively, around the world.
AmazonListRankCompanyRevenue ($B)1Amazon$280.52Google$161.83JD.com$82.84Facebook$70.6956 more rows
GOOGLE: Global Organization of Oriented Group Language of Earth. There is a lot of confusion about if Google has a full form or it is just a word created by the founder of Google.
10 Biggest Companies in the World#1 Walmart Inc. (WMT)#2 China Petroleum & Chemical Corp. (SNP)#3 Amazon.com Inc. (AMZN)#4 PetroChina Co. Ltd. (PTR)#5 Apple Inc. (AAPL)#6 CVS Health Corp. (CVS)#7 Royal Dutch Shell PLC (RDS. A)#8 Berkshire Hathaway Inc. (BRK. A)More items…
By November 2013, Google's search market share in China had declined to 1.7% from its August 2009 level of 36.2%, though it has slowly risen since, representing 3.8% of the search engine market by July of 2020….Google China.Type of siteSearch engineHeadquartersBeijing , ChinaArea servedChinaParentGoogleURLwww.google.cn3 more rows
Walmart topped the ranking with about 523.96 billion U.S. dollars in revenue. Walmart was also the largest company in the world based on its number of employees, with some 2.2 million all over the world.
Quick Answer: What Country Singer Son Drowned In The Pool?
Does Granger Smith have a kid? River Kelly SmithLincoln
Are There Trade Unions In India?
What are the rules of trade union? A registered Trade
Question: Is It Worth Filing A Claim For A Cracked Windshield?
Do you have to pay a deductible for a cracked windshield?
Question: How Can I Have Fun On The Internet?
What should I do at 2 am? 36 Things to do at 2am with
What Do You Need To Get An EIN?
Is my ein linked to my SSN? An EIN is to a business
Quick Answer: How Does A Cashier'S Check Work?
Can you get scammed with a cashier'
Question: How Do I Leave My Wife Peacefully?
What is the best way to leave your wife? You do not
Quick Answer: Is Harry Potter On Netflix Or Amazon Prime?
What streaming service has Harry Potter for free?
How Do You Use The Word Contingency?
What does contingency mean? "Contingent" or "pending"
Question: How Do You Write 80 In Roman Numerals?
How do you write 10 in Roman numerals? List of Roman
What To Do If GPS Is Not Working?
Why is my GPS in my car not working? Accuracy problems
Question: Are Concubines Legal?
Are concubines still a thing? While concubines are
Question: What Are The Fastest Muscles In The Human Body?
What is the slowest muscle in the human body?
© 2021 mahoningvalleylanes.com


Employees in Unit: Included: All f/t & reg. p/t dispatchers, clerkc, collectors, distribution repair A & B, garage helpers, measurement techs, meter readers A & B, pressure control operators, SCADE techs, utility techs, crew memeber IV, and distribution operators employed by the Employer at its 4180 S, Highway 1, Rockledge, Florida facility; and all f/t & reg. p/t dispatchers, meter repair, meter repair techs A & B, meter testers, measurement techs, meter readers A & B, pressure control operators, SCADA techs, utility techs, crew memeber IVs, and distribution operators employed by the Employer at its 933 East 25th Street and 955 East 25th Street, Hialeah, Florida facitity. Excluded: All other employees, professional employees, office clerical employees, guards and supervisors as defined in the Act. Collectors, clerks, field service reps.


Other drivers most commonly associated with Encore Electronics Enutv 3 problems: Direct Download Success Stats: I wil keep coming back for sure. Device Driver Installation 2. It supports current analog TV standard to let users have an instant TV entertainment though the USB of the desktop or laptop computers. Would you use this site again?: This option requires no OS understanding.
Technical Support Chapter 5: Product specifications, size, and shape are subject to change without notice, and actual product appearance may differ from that depicted herein. Page 22 Fit Image: Features Hard Disc Drive: Encore Electronics Enutv 3 was fully scanned at: Adjust the Volume or mute.
Fnutv Electronics Enutv 3 2. Encore Electronics Enutv 3 driver direct download was reported as adequate by a large percentage of our reporters, so it should be good to download and install.
Encore Electronics Enutv 3 A1. One is scan by frequency that scans low frequency to high frequency. Encore Electronics Enutv 3 O2. Locks the viewer at the current magnifying level.
Direct Download Success Stats: If you encounter problems with the direct download for these operating systems, please consult enuttv driver download manager for the specific Encore Electronics Enutv 3 model. Installation Manager Success Stats: Wait Installation Wizard copying necessary driver files onto your system. To print the manual completely, please, download it.
This option requires basic OS understanding. Launch The Enutv-3 Program Chapter 3: Finally my PC got up to speed! Table of Contents Add to my manuals Add.
Please choose your desired format. Got it, continue to print. Encore Electronics Enutv 3 now has a special edition for these Windows versions: Using The Remote Control Chapter 4: Show 4×4 TV wall on screen Channel List: Select Your Operating System, download zipped files, and then enutc to manually install them.
Magnifies image to fit screen or window Fit Width: Service may change without prior notice. You can use the control panel or setting table to set the video format. Encore Electronics Enutv 3 File Name: The setup screen will automatically appear. Enter text from picture: I wil keep coming back for sure.
Install The Enutv-3 Utility Software 2.