added support for assigments. refactored renderer to use multimethods