Added MorenoB's commit in its correct format.

Copied+pasted MorenoB's commits. Changed some small things around that gave compiler errors (`status.LISTEN` etc. are references to a static enum via instances thereof. All instances of `status.THING` replaced with `statusEnum.THING`).

Will not accept this pull request until the Communication isn't immediately started within the constructor. That is:

    public Communication() {
        update();
        status = statusEnum.INITIALIZE;
    }

No function calls within the constructor unless a good reason can be provided. Creating a new Communication should look somewhat like this:

    Communication comm = new Communication();
    comm.start();  // Start the communication process here. 

rather than:

    Communication comm = new Communication();  // Immediately starts a process within the instance.

I'm not at home enough in the innards of the code to apply a quick fix to this phenomenom. I had already fixed this in the `Controller` class, where you did the same.