+ only encode when necessary