new release with minor updates and a new interface IRenderer to avoid using Dynamic for renderer