changed type signatures and elm to reflect returning a signal tuple