refactor & pluginfiy
update