Demo checkpoint #3 - custom renderer