If install() and update() must be separated, then pls go ahead with the refactor plan:)