1. use explicit dispatch instead of implicit dispatch
2. upgrade foundation