A Scala algebra for writing telephony applications, including an implementation that wraps asterisk-java