refactor build, and make it configurable
update deps
update deps