    # File lib/amalgalite/database.rb, line 139
        def initialize( filename, mode = "w+", opts = {})
          @open           = false
          @profile_tap    = nil
          @trace_tap      = nil
          @type_map       = ::Amalgalite::TypeMaps::DefaultMap.new
          @functions      = Hash.new
          @aggregates     = Hash.new
          @utf16          = false

          unless VALID_MODES.keys.include?( mode )
            raise InvalidModeError, "#{mode} is invalid, must be one of #{VALID_MODES.keys.join(', ')}"
          end

          if not File.exist?( filename ) and opts[:utf16] then
            raise NotImplementedError, "Currently Amalgalite has not implemented utf16 support"
          else
            @api = Amalgalite::SQLite3::Database.open( filename, VALID_MODES[mode] )
          end
          @open = true
        end