diff --git a/src/include/switch_sqlite.h b/src/include/switch_sqlite.h
index d257ed6950..aaff4e1132 100644
--- a/src/include/switch_sqlite.h
+++ b/src/include/switch_sqlite.h
@@ -58,39 +58,346 @@ extern "C" {
 */
 typedef sqlite3 switch_core_db;
 
+/**
+** Aggregate functions use the following routine to allocate
+** a structure for storing their state.  The first time this routine
+** is called for a particular aggregate, a new structure of size nBytes
+** is allocated, zeroed, and returned.  On subsequent calls (for the
+** same aggregate instance) the same buffer is returned.  The implementation
+** of the aggregate can use the returned buffer to accumulate data.
+**
+** The buffer allocated is freed automatically by SQLite.
+*/
+DoxyDefine(void *switch_core_db_aggregate_context(sqlite3_context*, int nBytes);)
 #define switch_core_db_aggregate_context sqlite3_aggregate_context
+
+/**
+** /return the number of calls to xStep for a particular
+** aggregate function instance.  The current call to xStep counts so this
+** routine always returns at least 1.
+*/
+DoxyDefine(int switch_core_db_aggregate_count(sqlite3_context*);)
 #define switch_core_db_aggregate_count sqlite3_aggregate_count
+
+/**
+** In the SQL strings input to sqlite3_prepare() and sqlite3_prepare16(),
+** one or more literals can be replace by parameters "?" or ":AAA" or
+** "$VVV" where AAA is an identifer and VVV is a variable name according
+** to the syntax rules of the TCL programming language.
+** The value of these parameters (also called "host parameter names") can
+** be set using the routines listed below.
+**
+** In every case, the first parameter is a pointer to the sqlite3_stmt
+** structure returned from sqlite3_prepare().  The second parameter is the
+** index of the parameter.  The first parameter as an index of 1.  For
+** named parameters (":AAA" or "$VVV") you can use 
+** sqlite3_bind_parameter_index() to get the correct index value given
+** the parameters name.  If the same named parameter occurs more than
+** once, it is assigned the same index each time.
+**
+** The fifth parameter to sqlite3_bind_blob(), sqlite3_bind_text(), and
+** sqlite3_bind_text16() is a destructor used to dispose of the BLOB or
+** text after SQLite has finished with it.  If the fifth argument is the
+** special value SQLITE_STATIC, then the library assumes that the information
+** is in static, unmanaged space and does not need to be freed.  If the
+** fifth argument has the value SQLITE_TRANSIENT, then SQLite makes its
+** own private copy of the data.
+**
+** The sqlite3_bind_* routine must be called before sqlite3_step() after
+** an sqlite3_prepare() or sqlite3_reset().  Unbound parameterss are
+** interpreted as NULL.
+*/
+
+DoxyDefine(int switch_core_db_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));)
 #define switch_core_db_bind_blob sqlite3_bind_blob
+DoxyDefine(int switch_core_db_bind_double(sqlite3_stmt*, int, double);)
 #define switch_core_db_bind_double sqlite3_bind_double
+DoxyDefine(int switch_core_db_bind_int(sqlite3_stmt*, int, int);)
 #define switch_core_db_bind_int sqlite3_bind_int
+DoxyDefine(int switch_core_db_bind_int64(sqlite3_stmt*, int, sqlite_int64);)
 #define switch_core_db_bind_int64 sqlite3_bind_int64
+DoxyDefine(int switch_core_db_bind_null(sqlite3_stmt*, int);)
 #define switch_core_db_bind_null sqlite3_bind_null
-#define switch_core_db_bind_parameter_count sqlite3_bind_parameter_count
-#define switch_core_db_bind_parameter_index sqlite3_bind_parameter_index
-#define switch_core_db_bind_parameter_name sqlite3_bind_parameter_name
+DoxyDefine(int switch_core_db_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));)
 #define switch_core_db_bind_text sqlite3_bind_text
+DoxyDefine(int switch_core_db_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));)
 #define switch_core_db_bind_text16 sqlite3_bind_text16
-#define switch_core_db_btree_trace sqlite3_btree_trace
+DoxyDefine(int switch_core_db_bind_value(sqlite3_stmt*, int, const sqlite3_value*);)
+#define switch_core_db_bind_value sqlite3_bind_value
+
+/**
+** Return the number of parameters in a compiled SQL statement.  This
+** routine was added to support DBD::SQLite.
+*/
+DoxyDefine(int switch_core_db_bind_parameter_count(sqlite3_stmt*);)
+#define switch_core_db_bind_parameter_count sqlite3_bind_parameter_count
+
+/**
+** Return the index of a parameter with the given name.  The name
+** must match exactly.  If no parameter with the given name is found,
+** return 0.
+*/
+DoxyDefine(int switch_core_db_bind_parameter_index(sqlite3_stmt*, const char *zName);)
+#define switch_core_db_bind_parameter_index sqlite3_bind_parameter_index
+
+/**
+** Return the name of the i-th parameter.  Ordinary parameters "?" are
+** nameless and a NULL is returned.  For parameters of the form :AAA or
+** $VVV the complete text of the parameter name is returned, including
+** the initial ":" or "$".  NULL is returned if the index is out of range.
+*/
+DoxyDefine(const char *switch_core_db_bind_parameter_name(sqlite3_stmt*, int);)
+#define switch_core_db_bind_parameter_name sqlite3_bind_parameter_name
+
+/**
+** This routine identifies a callback function that is invoked
+** whenever an attempt is made to open a database table that is
+** currently locked by another process or thread.  If the busy callback
+** is NULL, then sqlite3_exec() returns SQLITE_BUSY immediately if
+** it finds a locked table.  If the busy callback is not NULL, then
+** sqlite3_exec() invokes the callback with three arguments.  The
+** second argument is the name of the locked table and the third
+** argument is the number of times the table has been busy.  If the
+** busy callback returns 0, then sqlite3_exec() immediately returns
+** SQLITE_BUSY.  If the callback returns non-zero, then sqlite3_exec()
+** tries to open the table again and the cycle repeats.
+**
+** The default busy callback is NULL.
+**
+** Sqlite is re-entrant, so the busy handler may start a new query. 
+** (It is not clear why anyone would every want to do this, but it
+** is allowed, in theory.)  But the busy handler may not close the
+** database.  Closing the database from a busy handler will delete 
+** data structures out from under the executing query and will 
+** probably result in a coredump.
+*/
+DoxyDefine(int switch_core_db_busy_handler(switch_core_db*, int(*)(void*,int), void*);)
 #define switch_core_db_busy_handler sqlite3_busy_handler
+
+/**
+** This routine sets a busy handler that sleeps for a while when a
+** table is locked.  The handler will sleep multiple times until 
+** at least "ms" milleseconds of sleeping have been done.  After
+** "ms" milleseconds of sleeping, the handler returns 0 which
+** causes sqlite3_exec() to return SQLITE_BUSY.
+**
+** Calling this routine with an argument less than or equal to zero
+** turns off all busy handlers.
+*/
+DoxyDefine(int switch_core_db_busy_timeout(switch_core_db*, int ms);)
 #define switch_core_db_busy_timeout sqlite3_busy_timeout
+
+/**
+** This function returns the number of database rows that were changed
+** (or inserted or deleted) by the most recent called sqlite3_exec().
+**
+** All changes are counted, even if they were later undone by a
+** ROLLBACK or ABORT.  Except, changes associated with creating and
+** dropping tables are not counted.
+**
+** If a callback invokes sqlite3_exec() recursively, then the changes
+** in the inner, recursive call are counted together with the changes
+** in the outer call.
+**
+** SQLite implements the command "DELETE FROM table" without a WHERE clause
+** by dropping and recreating the table.  (This is much faster than going
+** through and deleting individual elements form the table.)  Because of
+** this optimization, the change count for "DELETE FROM table" will be
+** zero regardless of the number of elements that were originally in the
+** table. To get an accurate count of the number of rows deleted, use
+** "DELETE FROM table WHERE 1" instead.
+*/
+DoxyDefine(int switch_core_db_changes(switch_core_db*);)
 #define switch_core_db_changes sqlite3_changes
+
+/**
+** A function to close the database.
+**
+** Call this function with a pointer to a structure that was previously
+** returned from sqlite3_open() and the corresponding database will by closed.
+**
+** All SQL statements prepared using sqlite3_prepare() or
+** sqlite3_prepare16() must be deallocated using sqlite3_finalize() before
+** this routine is called. Otherwise, SQLITE_BUSY is returned and the
+** database connection remains open.
+*/
+DoxyDefine(int switch_core_db_close(switch_core_db *);)
 #define switch_core_db_close sqlite3_close
+
+/**
+** To avoid having to register all collation sequences before a database
+** can be used, a single callback function may be registered with the
+** database handle to be called whenever an undefined collation sequence is
+** required.
+**
+** If the function is registered using the sqlite3_collation_needed() API,
+** then it is passed the names of undefined collation sequences as strings
+** encoded in UTF-8. If sqlite3_collation_needed16() is used, the names
+** are passed as UTF-16 in machine native byte order. A call to either
+** function replaces any existing callback.
+**
+** When the user-function is invoked, the first argument passed is a copy
+** of the second argument to sqlite3_collation_needed() or
+** sqlite3_collation_needed16(). The second argument is the database
+** handle. The third argument is one of SQLITE_UTF8, SQLITE_UTF16BE or
+** SQLITE_UTF16LE, indicating the most desirable form of the collation
+** sequence function required. The fourth parameter is the name of the
+** required collation sequence.
+**
+** The collation sequence is returned to SQLite by a collation-needed
+** callback using the sqlite3_create_collation() or
+** sqlite3_create_collation16() APIs, described above.
+*/
+DoxyDefine(int switch_core_db_collation_needed(
+  switch_core_db*, 
+  void*, 
+  void(*)(void*,switch_core_db*,int eTextRep,const char*)
+);)
 #define switch_core_db_collation_needed sqlite3_collation_needed
+DoxyDefine(int switch_core_db_collation_needed16(
+  switch_core_db*, 
+  void*,
+  void(*)(void*,switch_core_db*,int eTextRep,const void*)
+);)
 #define switch_core_db_collation_needed16 sqlite3_collation_needed16
+
+/**
+** The next group of routines returns information about the information
+** in a single column of the current result row of a query.  In every
+** case the first parameter is a pointer to the SQL statement that is being
+** executed (the sqlite_stmt* that was returned from sqlite3_prepare()) and
+** the second argument is the index of the column for which information 
+** should be returned.  iCol is zero-indexed.  The left-most column as an
+** index of 0.
+**
+** If the SQL statement is not currently point to a valid row, or if the
+** the colulmn index is out of range, the result is undefined.
+**
+** These routines attempt to convert the value where appropriate.  For
+** example, if the internal representation is FLOAT and a text result
+** is requested, sprintf() is used internally to do the conversion
+** automatically.  The following table details the conversions that
+** are applied:
+**
+**    Internal Type    Requested Type     Conversion
+**    -------------    --------------    --------------------------
+**       NULL             INTEGER         Result is 0
+**       NULL             FLOAT           Result is 0.0
+**       NULL             TEXT            Result is an empty string
+**       NULL             BLOB            Result is a zero-length BLOB
+**       INTEGER          FLOAT           Convert from integer to float
+**       INTEGER          TEXT            ASCII rendering of the integer
+**       INTEGER          BLOB            Same as for INTEGER->TEXT
+**       FLOAT            INTEGER         Convert from float to integer
+**       FLOAT            TEXT            ASCII rendering of the float
+**       FLOAT            BLOB            Same as FLOAT->TEXT
+**       TEXT             INTEGER         Use atoi()
+**       TEXT             FLOAT           Use atof()
+**       TEXT             BLOB            No change
+**       BLOB             INTEGER         Convert to TEXT then use atoi()
+**       BLOB             FLOAT           Convert to TEXT then use atof()
+**       BLOB             TEXT            Add a \000 terminator if needed
+**
+** The following access routines are provided:
+**
+** _type()     Return the datatype of the result.  This is one of
+**             SQLITE_INTEGER, SQLITE_FLOAT, SQLITE_TEXT, SQLITE_BLOB,
+**             or SQLITE_NULL.
+** _blob()     Return the value of a BLOB.
+** _bytes()    Return the number of bytes in a BLOB value or the number
+**             of bytes in a TEXT value represented as UTF-8.  The \000
+**             terminator is included in the byte count for TEXT values.
+** _bytes16()  Return the number of bytes in a BLOB value or the number
+**             of bytes in a TEXT value represented as UTF-16.  The \u0000
+**             terminator is included in the byte count for TEXT values.
+** _double()   Return a FLOAT value.
+** _int()      Return an INTEGER value in the host computer's native
+**             integer representation.  This might be either a 32- or 64-bit
+**             integer depending on the host.
+** _int64()    Return an INTEGER value as a 64-bit signed integer.
+** _text()     Return the value as UTF-8 text.
+** _text16()   Return the value as UTF-16 text.
+*/
+DoxyDefine(const void *switch_core_db_column_blob(sqlite3_stmt*, int iCol);)
 #define switch_core_db_column_blob sqlite3_column_blob
+DoxyDefine(int switch_core_db_column_bytes(sqlite3_stmt*, int iCol);)
 #define switch_core_db_column_bytes sqlite3_column_bytes
+DoxyDefine(int switch_core_db_column_bytes16(sqlite3_stmt*, int iCol);)
 #define switch_core_db_column_bytes16 sqlite3_column_bytes16
-#define switch_core_db_column_count sqlite3_column_count
-#define switch_core_db_column_decltype sqlite3_column_decltype
-#define switch_core_db_column_decltype16 sqlite3_column_decltype16
+DoxyDefine(double switch_core_db_column_double(sqlite3_stmt*, int iCol);)
 #define switch_core_db_column_double sqlite3_column_double
+DoxyDefine(int switch_core_db_column_int(sqlite3_stmt*, int iCol);)
 #define switch_core_db_column_int sqlite3_column_int
+DoxyDefine(sqlite_int64 switch_core_db_column_int64(sqlite3_stmt*, int iCol);)
 #define switch_core_db_column_int64 sqlite3_column_int64
-#define switch_core_db_column_name sqlite3_column_name
-#define switch_core_db_column_name16 sqlite3_column_name16
+DoxyDefine(const unsigned char *switch_core_db_column_text(sqlite3_stmt*, int iCol);)
 #define switch_core_db_column_text sqlite3_column_text
+DoxyDefine(const void *switch_core_db_column_text16(sqlite3_stmt*, int iCol);)
 #define switch_core_db_column_text16 sqlite3_column_text16
+DoxyDefine(int switch_core_db_column_type(sqlite3_stmt*, int iCol);)
 #define switch_core_db_column_type sqlite3_column_type
+
+/**
+** The first parameter is a compiled SQL statement. This function returns
+** the column heading for the Nth column of that statement, where N is the
+** second function parameter.  The string returned is UTF-8 for
+** sqlite3_column_name() and UTF-16 for sqlite3_column_name16().
+*/
+DoxyDefine(const char *switch_core_db_column_name(sqlite3_stmt*,int);)
+#define switch_core_db_column_name sqlite3_column_name
+DoxyDefine(const void *switch_core_db_column_name16(sqlite3_stmt*,int);)
+#define switch_core_db_column_name16 sqlite3_column_name16
+
+/**
+** Return the number of columns in the result set returned by the compiled
+** SQL statement. This routine returns 0 if pStmt is an SQL statement
+** that does not return data (for example an UPDATE).
+*/
+DoxyDefine(int switch_core_db_column_count(sqlite3_stmt *pStmt);)
+#define switch_core_db_column_count sqlite3_column_count
+
+/**
+** The first parameter is a compiled SQL statement. If this statement
+** is a SELECT statement, the Nth column of the returned result set 
+** of the SELECT is a table column then the declared type of the table
+** column is returned. If the Nth column of the result set is not at table
+** column, then a NULL pointer is returned. The returned string is always
+** UTF-8 encoded. For example, in the database schema:
+**
+** CREATE TABLE t1(c1 VARIANT);
+**
+** And the following statement compiled:
+**
+** SELECT c1 + 1, 0 FROM t1;
+**
+** Then this routine would return the string "VARIANT" for the second
+** result column (i==1), and a NULL pointer for the first result column
+** (i==0).
+*/
+DoxyDefine(const char *switch_core_db_column_decltype(sqlite3_stmt *, int i);)
+#define switch_core_db_column_decltype sqlite3_column_decltype
+
+/**
+** The first parameter is a compiled SQL statement. If this statement
+** is a SELECT statement, the Nth column of the returned result set 
+** of the SELECT is a table column then the declared type of the table
+** column is returned. If the Nth column of the result set is not at table
+** column, then a NULL pointer is returned. The returned string is always
+** UTF-16 encoded. For example, in the database schema:
+**
+** CREATE TABLE t1(c1 INTEGER);
+**
+** And the following statement compiled:
+**
+** SELECT c1 + 1, 0 FROM t1;
+**
+** Then this routine would return the string "INTEGER" for the second
+** result column (i==1), and a NULL pointer for the first result column
+** (i==0).
+*/
+DoxyDefine(const void *switch_core_db_column_decltype16(sqlite3_stmt*,int);)
+#define switch_core_db_column_decltype16 sqlite3_column_decltype16
+
 #define switch_core_db_commit_hook sqlite3_commit_hook
 #define switch_core_db_complete sqlite3_complete
 #define switch_core_db_complete16 sqlite3_complete16