result is initialized to `nil`, this will run every time