Custom renderer

Like the react implementation, the rendering side is a slim component that is made to be swapped out and customised.