much cleaned API in my opinion, plus a much simpler example