refactor update check, closes #521