#22 add canvas renderer