public boolean createSignalBlock(SignalBlock other) {
        if (other == this) {
            printDebugPair("Signal Block creation was aborted, cannot pair with self.", other.tile);
            return false;
        }
        printDebugPair("Signal Block creation being attempted.", other.tile);
        Status myTrackStatus = getTrackStatus();
        Status otherTrackStatus = other.getTrackStatus();
        if (myTrackStatus == Status.INVALID || otherTrackStatus == Status.INVALID) {
            printDebugPair("Signal Block creation failed, could not find Track.", other.tile);
            return false;
        }
        WorldCoordinate myTrack = getTrackLocation();
        WorldCoordinate otherTrack = other.getTrackLocation();
        TrackScanner.ScanResult scan = TrackScanner.scanStraightTrackSection(tile.getWorldObj(), myTrack.x, myTrack.y, myTrack.z, otherTrack.x, otherTrack.y, otherTrack.z);
        if (!scan.areConnected) {
            printDebugPair("Signal Block creation failed, could not find Path.", other.tile);
            return false;
        }
        addPairing(other.getCoords());
        other.addPairing(getCoords());
        endPairing();
        other.endPairing();
        trackScans.put(otherTrack, scan);
        printDebugPair("Signal Block created successfully.", other.tile);
        return true;
    }