Rewrote Renderer to Renderer<S>
Fixed codegen to use as_slice() instead of clone() for arguments
Using Option<S> in Renderer to avoid problems with destructor