add encode function