A control system for a railway safety critical application system, comprising: at least one controller, which comprises a computer processor and is configured to execute first and second tasks; the first task capable of being in bilateral communication with the second task and capable of sending and receiving a safety critical systems message within a railway safety critical application system, the message including a security code and safety critical data; the second task capable of being in bilateral communication with the first task and capable of receiving a safety critical systems message, but incapable of sending the safety critical systems message to the railway safety critical application system, the second task having a security code generator; the control system further comprising an inter-task communications pathway coupling the first and second tasks; wherein the first and second tasks are each configured to receive a common input safety critical systems message including input safety critical systems data and an input security code, independently verify the input message integrity and independently generate output safety critical systems data, the second task is configured to generate an output security code and to send it to the first task, and the first task is configured to assemble and send an output safety critical systems message including the output safety critical systems data and the second task output security code for use within the railway safety critical application system, characterized by said computer processor being configured to execute said first task and said second task simultaneously, virtually and in real time in said computer processor. at least one controller, which comprises a computer processor and is configured to execute first and second tasks; the first task capable of being in bilateral communication with the second task and capable of sending and receiving a safety critical systems message within a railway safety critical application system, the message including a security code and safety critical data; the second task capable of being in bilateral communication with the first task and capable of receiving a safety critical systems message, but incapable of sending the safety critical systems message to the railway safety critical application system, the second task having a security code generator; the control system further comprising an inter-task communications pathway coupling the first and second tasks; wherein the first and second tasks are each configured to receive a common input safety critical systems message including input safety critical systems data and an input security code, independently verify the input message integrity and independently generate output safety critical systems data, the second task is configured to generate an output security code and to send it to the first task, and the first task is configured to assemble and send an output safety critical systems message including the output safety critical systems data and the second task output security code for use within the railway safety critical application system, characterized by said computer processor being configured to execute said first task and said second task simultaneously, virtually and in real time in said computer processor.