add a refresh properties step to the lifecycle
fix typo
comply with jshint
rename a method and improve doc
empty the invalidated property array right after refresh
improve tests