# File vapor/repositorymgr.rb, line 345
    def removeclass( klass, recursive )
      klass = known_classes().find{|k| k.name == klass.to_s }
      
      # check if the class is known to the repository
      raise ClassNotKnownError unless klass 

      # check if the class has any child  classes
      children = known_classes().select{|k| k.superclass == klass.name }.collect{|k| k.name}

      if !children.empty? then  # child classes exist
        if recursive then       # delete children recursivly
          children.each{|c| removeclass( c, recursive ) }
        else                    # don't delete children
          raise ClassNotDeletableError.new( "Class is not deletable because of child classes", children )
        end                     # recursion?
      end                       # children?

      ## let's start removing, start with meta-data
      
      # first get class's oid 
      oid = @dbh.execute( %!SELECT _oid FROM ":Vapor::ClassMetaData" WHERE _name = '#{klass.name}'! ).fetch[0]

      # remove attributes
      @dbh.execute( %!DELETE FROM ":Vapor::AttributeMetaData" WHERE _oid = #{oid}! ) 

      # remove class itself
      @dbh.execute( %!DELETE FROM ":Vapor::ClassMetaData" WHERE _oid = '#{oid}' ! )

      ## remove tables, shouldn't be a problem, child classes have been removed
      @dbh.execute( %!DROP TABLE "_#{klass.table}"! )  # historic
      @dbh.execute( %!DROP TABLE "#{klass.table}"! )   # actual data

      ## remove from list of known classes
      known_classes().delete( klass )

    end