1. A method comprising: changing a current communications protocol state of a communications session from a first communications protocol state to a second communications protocol state with a first telephony application running on a first system software environment at a terminal, wherein the current communications protocol state is changed by the first telephony application directly executing a first routine provided by a shared signaling protocol stack running on a virtualization layer at the terminal, and wherein the first system software environment and the second system software environment are both running on a same system software environment; and changing the current communications protocol state of the communications session from the second communications protocol state to a third communications protocol state with a second telephony application running on a second system software environment at the terminal, wherein the current communications protocol state is changed by the second telephony application directly executing a second routine provided by the shared signaling protocol stack running on the terminal, and wherein the shared signaling protocol stack is shared by the first system software environment and the second system software environment.