Quite long but worth the effort.