adding call_by_value functionality
improving printing and documentation