add decode function