why abstracting to AGBaseSQLiteStorage instead of having the code in AGSQLiteStorage?