refactor
update decoder