kvm: made ITerm an abstract type (classes are hiden, use psuedoconstructors to create instances)