make canvas & d3 deps optional