recursive polymorphic commenting added