dec(message :: String.t) :: message :: any | {:error, term}
enc(message :: any) :: message :: String.t | {:error, term}