text:
The importance of independent, unbiased data
By Christine Todd Whitman, opinion contributor — 01/24/19 09:00 AM EST
The Trump administration's latest revelation that perhaps thousands more kids have been separated from their families at the border, is yet another signal of how this administration seemingly manipulates facts and misleads the public — in ways that are slowly chipping away at our democracy's credibility and integrity.
Trump has said Russia didn't interfere in our elections. (It did). He said human activity isn't contributing to climate change (It is.). And Trump said in a recent Oval Office address that migrants are responsible for a spate of violent crime (They aren't.)
It's certainly not new for presidents or politicians of all parties to present data in a way that serves their political goals. But the Trump administration has gone farther than that, ignoring and egregiously distorting facts as justifications for flawed policies. These actions can have immense consequences for public health, the environment, national security, the economy, and ultimately democratic accountability.
Conflict over facts is a roadblock that prevents people on both sides of the aisle from finding agreement. And in the long term, these disputes undermine Americans' faith in government. A recent poll showed only a third of Americans now trust their government "to do what is right" — a decline of 14 percent from 2017. The pollster cited a "lack of objective facts and rational discourse" as the root cause for the swift and steep decline.
I know how crucial good information is to our democracy.
Every year the EPA releases reports and assessments on a variety of topics that impact the health, natural environment, and economic well-being of Americans and the global community. It's critical that such reports be publicly available — and that sound data be used in policymaking — to fulfill EPA's mission as steward of the environment and public health, and to maintain accountability to the American public.
Last week, I watched the confirmation hearing for the agency's acting administrator, Andrew Wheeler. During the hearing, he told senators he would follow the law and not be swayed by political ideology.
Other parts of his testimony gave me pause. Wheeler claimed to rely on the research EPA scientific staff had produced when making policy decisions, but senators highlighted episodes when that research did not support policy decisions.
When questioned about potential political interference to stop inspection of ethylene oxide — a chemical that poses a public health risk — he did not commit to investigate the incident. And although he assured the Senate Committee on Environment and Public Works that there was no political interference in the National Climate Assessment released in November, he admitted that he hadn't read the report before it was released.
The American people do not see the fact of climate change as a political issue subject to debate. Indeed, according to a recent poll, 78 percent of Americans — including 64 percent of Republicans — believe climate change is causing extreme weather and sea level rise. As these statistics show, the environmental and public health issues the EPA is charged with handling are just too important to be subject to the whims of political officials.
So how do we set standards that ensure the integrity of government data that we expect in American democracy? It's a question I'm tackling as part of the National Task Force on Rule of Law and Democracy, which I co-chair with former U.S. Attorney Preet Bharara Preet BhararaReimagining the role of the next SEC chair What a Biden administration should look like Democratic attorneys criticize House Judiciary Democrats' questioning of Barr MORE. The Task Force is a nonpartisan group of former public servants and policy experts who reflect varying political views. We're bound together by our shared belief that we need to take action or risk the destruction of core tenets of American democracy.
Right now we're facing serious issues relating to, among other things, the environment, public health, the economy, and, yes, immigration, solutions to which will require reliance on hard facts undistorted by hyper-partisan political appointees. There is a long tradition in government of supporting data collection, scientific research, and unbiased analyses.
When we trust the experts to do their jobs with integrity and professionalism — as I know they do — we benefit not only from the resulting policy but from the informed debate and civic engagement, as well as private sector innovation, such data and analyses make possible. And there's been some good news in recent days. A bill recently passed by Congress, which aims to improve public access to government data, has become law. But much more remains be done.
The American public deserves to have access to the facts — and should trust that government officials are using good data to make policy decisions. Democratic accountability requires the dissemination of accurate information so that the public can evaluate the quality of decisions made by government officials. It's time to restore public trust in transparent, accountable, and evidence-based policymaking.
Christine Todd Whitman is co-chair of the National Task Force on Rule of Law and Democracy. She is a former Republican governor of New Jersey, and the former administrator of the Environmental Protection Agency.
Tags Preet Bharara Data Presidency of Donald Trump Civic engagement United States United States Environmental Protection Agency Climate change skepticism and denial


PRISM stands for Program Registration and Information Sharing Management. There has been a significant void in the current generation of educational student information systems (SIS) and we at PRISM have been filling the void; sharing of student data across Boards/Colleges/Schools.
We developed our first version of PRISM labelled the Student Success eSolution (SSeS) in 2005 in conjunction with the Ontario eLearning Consortium (OeLC). The OeLC required a cloud-based system to allow school boards to securely and efficiently undertake online course registration and share student information with other school boards or schools since students were beginning to take eLearning courses online via outside school boards. The system was a success and grew year after year with over 20 school boards across Ontario submitting feature enhancements to optimize the system. The PRISM system not only fills the need of a secure and efficient method of sharing student information but also includes third party integrations with essential applications such as with D2L's LMS and custom reporting for shareholders and numerous levels including school, school board or province.
In 2016, in conjunction with the School College Work Initiative (SCWI) and St. Clair College, we launched a modified PRISM system for Dual Credit registrations for the province of Ontario. The first year pilot was a huge success and is now being used by numerous colleges and school boards across Ontario. PRISM again not only simplified a tedious and paper-based course registration process, but also provided a secure and efficient system to share student information from school boards to colleges.
We are innovators, engineers, and enthusiasts who seek to demonstrate the potential of web-based products and solutions for all industries. We have done what's right by absolutely committing ourselves to the evolving online industry, the right way by putting together an expert team that can think ahead of the curve and deliver innovative solutions. Through strong partnerships with visionary clients and our custom developed technology, we believe our mission of integrating web-based solutions to all industries can be realized.
JIC Design Inc. specializes in the design of high performance websites, e-commerce, mobile applications and custom web development solutions for businesses and organizations of all sizes worldwide. Our strong technical competency, focus on long-term stability, well-defined methodology and a dedicated team of expert engineers and designers provide us with the ability to stretch our core competencies to successfully overcome new challenges for our clients. High quality work, dedication and delivering on our promises make all the difference to our customers, and are crucial components of JIC Design's success and recognition as a leader in the industry.


text:
'''
Configuration object
====================

:class:`Config` object is an instance of a modified Python ConfigParser.
See `ConfigParser documentation
<http://docs.python.org/library/configparser.html>`_ for more information.

Usage of Config object
----------------------

Read a configuration token from a particular section::

    >>> from kivy.config import Config
    >>> Config.getint('kivy', 'show_fps')
    0

Change the configuration and save it::

    >>> Config.set('kivy', 'retain_time', '50')
    >>> Config.write()

.. versionchanged:: 1.7.1

    The ConfigParser should work correctly with utf-8 now. The values are
    converted from ascii to unicode only when needed. The method get() returns
    utf-8 strings.

Available configuration tokens
------------------------------

:kivy:

    `desktop`: (0, 1)
        Enable/disable specific features if True/False. For example enabling
        drag-able scroll-bar in scroll views, disabling of bubbles in
        TextInput...  True etc.
    `exit_on_escape`: (0, 1)
        Enable/disable exiting kivy when escape is hit if True/False.
    `log_level`: (debug, info, warning, error, critical)
        Set the minimum log level to use
    `log_dir`: string
        Path of log directory
    `log_name`: string
        Format string to use for the filename of log file
    `log_enable`: (0, 1)
        Activate file logging
    `keyboard_mode`: ('', 'system', 'dock', 'multi', 'systemanddock',
        'systemandmulti')
        Keyboard mode to use. If empty, Kivy will decide for you what is the
        best for your current platform. Otherwise, you can set one of 'system'
        (real keyboard), 'dock' (one virtual keyboard docked in a screen side),
        'multi' (one virtual keyboard everytime a widget ask for),
        'systemanddock' (virtual docked keyboard plus input from real keyboard)
        'systemandmulti' (analogous)
    `keyboard_layout`: string
        Identifier of the layout to use
    `window_icon`: string
        Path of the window icon. Use this if you want to replace the default
        pygame icon.

:postproc:

    `double_tap_time`: int
        Time allowed for the detection of double tap, in milliseconds
    `double_tap_distance`: float
        Maximum distance allowed for a double tap, normalized inside the range
        0 - 1000
    `triple_tap_time`: int
        Time allowed for the detection of triple tap, in milliseconds
    `triple_tap_distance`: float
        Maximum distance allowed for a triple tap, normalized inside the range
        0 - 1000
    `retain_time`: int
        Time allowed for a retain touch, in milliseconds
    `retain_distance`: int
        If the touch moves more than is indicated by retain_distance, it will
        not be retained. Argument should be an int between 0 and 1000.
    `jitter_distance`: int
        Maximum distance for jitter detection, normalized inside the range 0
        - 1000
    `jitter_ignore_devices`: string, seperated with comma
        List of devices to ignore from jitter detection
    `ignore`: list of tuples
        List of regions where new touches are ignored.
        This configuration token can be used to resolve hotspot problems
        with DIY hardware. The format of the list must be::

            ignore = [(xmin, ymin, xmax, ymax), ...]

        All the values must be inside 0 - 1 range.

:graphics:

    `maxfps`: int, default to 60
        Maximum FPS allowed.
    `fullscreen`: (0, 1, fake, auto)
        Activate fullscreen. If set to `1`, a resolution of `width`
        times `height` pixels will be used.
        If set to `auto`, your current display's resolution will be
        used instead. This is most likely what you want.
        If you want to place the window in another display,
        use `fake` and adjust `width`, `height`, `top` and `left`.
    `width`: int
        Width of the :class:`~kivy.core.window.Window`, not used if in `auto
        fullscreen`
    `height`: int
        Height of the :class:`~kivy.core.window.Window`, not used if in `auto
        fullscreen`
    `fbo`: (hardware, software, force-hardware)
        Select the FBO backend to use.
    `show_cursor`: (0, 1)
        Show the cursor on the screen
    `position`: (auto, custom)
        Position of the window on your display. If `auto` is used, you have no
        control of the initial position: `top` and `left` are ignored.
    `top`: int
        Top position of the :class:`~kivy.core.window.Window`
    `left`: int
        Left position of the :class:`~kivy.core.window.Window`
    `rotation`: (0, 90, 180, 270)
        Rotation of the :class:`~kivy.core.window.Window`
    `resizable`: (0, 1)
        If 0, the window will have a fixed size. If 1, the window will be
        resizable.

:input:

    Input section is particular. You can create new input device with this
    syntax::

        # example of input provider instance
        yourid = providerid,parameters

        # example for tuio provider
        default = tuio,127.0.0.1:3333
        mytable = tuio,192.168.0.1:3334

    .. seealso::

        Check all the providers in kivy.input.providers for the syntax to use
        inside the configuration file.

:widgets:

    `scroll_distance`: int
        Default value of :data:`~kivy.uix.scrollview.Scrollview.scroll_distance`
        property in :class:`~kivy.uix.scrollview.Scrollview` widget.
        Check the widget documentation for more information.

    `scroll_friction`: float
        Default value of :data:`~kivy.uix.scrollview.Scrollview.scroll_friction`
        property in :class:`~kivy.uix.scrollview.Scrollview` widget.
        Check the widget documentation for more information.

    `scroll_timeout`: int
        Default value of :data:`~kivy.uix.scrollview.Scrollview.scroll_timeout`
        property in :class:`~kivy.uix.scrollview.Scrollview` widget.
        Check the widget documentation for more information.

    `scroll_stoptime`: int
        Default value of :data:`~kivy.uix.scrollview.Scrollview.scroll_stoptime`
        property in :class:`~kivy.uix.scrollview.Scrollview` widget.
        Check the widget documentation for more information.

    `scroll_moves`: int
        Default value of :data:`~kivy.uix.scrollview.Scrollview.scroll_moves`
        property in :class:`~kivy.uix.scrollview.Scrollview` widget.
        Check the widget documentation for more information.

:modules:

    You can activate modules with this syntax::

        modulename =

    Anything after the = will be passed to the module as arguments.
    Check the specific module's documentation for a list of accepted arguments.

.. versionchanged:: 1.8.0
    `systemanddock` and `systemandmulti` has been added as possible value for
    `keyboard_mode` in kivy section. `exit_on_escape` has been added in the
    kivy section.

.. versionchanged:: 1.2.0
    `resizable` has been added to graphics section

.. versionchanged:: 1.1.0
    tuio is not listening by default anymore. windows icons are not copied to
    user directory anymore. You can still set a new window icon by using
    ``window_icon`` config setting.

.. versionchanged:: 1.0.8
    `scroll_timeout`, `scroll_distance` and `scroll_friction` have been added.
    `list_friction`, `list_trigger_distance` and `list_friction_bound` have been
    removed. `keyboard_type` and `keyboard_layout` have been removed from
    widget.  `keyboard_mode` and `keyboard_layout` have been added to kivy
    section.
'''

__all__ = ('Config', 'ConfigParser')

try:
    from ConfigParser import ConfigParser as PythonConfigParser
except ImportError:
    from configparser import RawConfigParser as PythonConfigParser
from os import environ
from os.path import exists
from kivy import kivy_config_fn
from kivy.logger import Logger, logger_config_update
from collections import OrderedDict
from kivy.utils import platform
from kivy.compat import PY2, string_types

_is_rpi = exists('/opt/vc/include/bcm_host.h')

# Version number of current configuration format
KIVY_CONFIG_VERSION = 10

#: Kivy configuration object
Config = None

class ConfigParser(PythonConfigParser):
    '''Enhanced ConfigParser class, that supports addition of default
    sections and default values.

    .. versionadded:: 1.0.7
    '''

    def __init__(self):
        PythonConfigParser.__init__(self)
        self._sections = OrderedDict()
        self.filename = None
        self._callbacks = []

    def add_callback(self, callback, section=None, key=None):
        '''Add a callback to be called when a specific section/key changed. If
        you don't specify a section or a key, it will call the callback for all
        section/keys.

        Callbacks will receive 3 arguments: the section, key and value.

        .. versionadded:: 1.4.1
        '''
        if section is None and key is not None:
            raise Exception('You cannot specify a key without a section')
        self._callbacks.append((callback, section, key))

    def _do_callbacks(self, section, key, value):
        for callback, csection, ckey in self._callbacks:
            if csection is not None and csection != section:
                continue
            elif ckey is not None and ckey != key:
                continue
            callback(section, key, value)

    def read(self, filename):
        '''Read only one filename. In contrast to the original ConfigParser of
        Python, this one is able to read only one file at a time. The latest
        read file will be used for the :meth:`write` method.
        '''
        if not isinstance(filename, string_types):
            raise Exception('Only one filename is accepted ({})'.format(
                string_types.__name__))
        self.filename = filename
        # If we try to open directly the configuration file in utf-8,
        # we correctly get the unicode value by default.
        # But, when we try to save it again, all the values we didn't changed
        # are still unicode, and then the PythonConfigParser internal do a str()
        # conversion -> fail.
        # Instead we currently to the conversion to utf-8 when value are
        # "get()", but we internally store them in ascii.
        #with codecs.open(filename, 'r', encoding='utf-8') as f:
        #    self.readfp(f)
        PythonConfigParser.read(self, filename)

    def set(self, section, option, value):
        '''Functions similarly to PythonConfigParser's set method, except that
        the value is implicitly converted to a string.
        '''
        e_value = value
        if PY2:
            if not isinstance(value, string_types):
                # might be boolean, int, etc.
                e_value = str(value)
            else:
                if isinstance(value, unicode):
                    e_value = value.encode('utf-8')
        ret = PythonConfigParser.set(self, section, option, e_value)
        self._do_callbacks(section, option, value)
        return ret

    def get(self, section, option, **kwargs):
        value = PythonConfigParser.get(self, section, option, **kwargs)
        if PY2:
            if type(value) is str:
                return value.decode('utf-8')
        return value

    def setdefaults(self, section, keyvalues):
        '''Set a lot of keys/values in one section at the same time
        '''
        self.adddefaultsection(section)
        for key, value in keyvalues.items():
            self.setdefault(section, key, value)

    def setdefault(self, section, option, value):
        '''Set the default value of a particular option
        '''
        if self.has_option(section, option):
            return
        self.set(section, option, value)

    def getdefault(self, section, option, defaultvalue):
        '''Get an option. If not found, it will return the default value
        '''
        if not self.has_section(section):
            return defaultvalue
        if not self.has_option(section, option):
            return defaultvalue
        return self.get(section, option)

    def getdefaultint(self, section, option, defaultvalue):
        '''Get an option. If not found, it will return the default value.
        The return value will be always converted as an integer.

        .. versionadded:: 1.6.0
        '''
        return int(self.getdefault(section, option, defaultvalue))

    def adddefaultsection(self, section):
        '''Add a section if the section is missing.
        '''
        if self.has_section(section):
            return
        self.add_section(section)

    def write(self):
        '''Write the configuration to the latest file opened with :meth:`read`
        method.

        Return True if the write finished successfully.
        '''
        if self.filename is None:
            return False
        try:
            with open(self.filename, 'w') as fd:
                PythonConfigParser.write(self, fd)
        except IOError:
            Logger.exception('Unable to write the config <%s>' % self.filename)
            return False
        return True

if not environ.get('KIVY_DOC_INCLUDE'):

    #
    # Read, analyse configuration file
    # Support upgrade of older config file versions
    #

    # Create default configuration
    Config = ConfigParser()
    Config.add_callback(logger_config_update, 'kivy', 'log_level')

    # Read config file if exist
    if exists(kivy_config_fn) and \
        'KIVY_USE_DEFAULTCONFIG' not in environ and \
        'KIVY_NO_CONFIG' not in environ:
        try:
            Config.read(kivy_config_fn)
        except Exception as e:
            Logger.exception('Core: error while reading local'
                             'configuration')

    version = Config.getdefaultint('kivy', 'config_version', 0)

    # Add defaults section
    Config.adddefaultsection('kivy')
    Config.adddefaultsection('graphics')
    Config.adddefaultsection('input')
    Config.adddefaultsection('postproc')
    Config.adddefaultsection('widgets')
    Config.adddefaultsection('modules')

    # Upgrade default configuration until we have the current version
    need_save = False
    if version != KIVY_CONFIG_VERSION and 'KIVY_NO_CONFIG' not in environ:
        Logger.warning('Config: Older configuration version detected'
                       ' ({0} instead of {1})'.format(
                           version, KIVY_CONFIG_VERSION))
        Logger.warning('Config: Upgrading configuration in progress.')
        need_save = True

    while version < KIVY_CONFIG_VERSION:
        Logger.debug('Config: Upgrading from %d to %d' % (version, version + 1))

        if version == 0:

            # log level
            Config.setdefault('kivy', 'keyboard_repeat_delay', '300')
            Config.setdefault('kivy', 'keyboard_repeat_rate', '30')
            Config.setdefault('kivy', 'log_dir', 'logs')
            Config.setdefault('kivy', 'log_enable', '1')
            Config.setdefault('kivy', 'log_level', 'info')
            Config.setdefault('kivy', 'log_name', 'kivy_%y-%m-%d_%_.txt')
            Config.setdefault('kivy', 'window_icon', '')

            # default graphics parameters
            Config.setdefault('graphics', 'display', '-1')
            Config.setdefault('graphics', 'fullscreen', 'no')
            Config.setdefault('graphics', 'height', '600')
            Config.setdefault('graphics', 'left', '0')
            Config.setdefault('graphics', 'maxfps', '0')
            Config.setdefault('graphics', 'multisamples', '2')
            Config.setdefault('graphics', 'position', 'auto')
            Config.setdefault('graphics', 'rotation', '0')
            Config.setdefault('graphics', 'show_cursor', '1')
            Config.setdefault('graphics', 'top', '0')
            Config.setdefault('graphics', 'vsync', '1')
            Config.setdefault('graphics', 'width', '800')

            # input configuration
            Config.setdefault('input', 'mouse', 'mouse')

            # activate native input provider in configuration
            # from 1.0.9, don't activate mactouch by default, or app are
            # unusable.
            if platform == 'win':
                Config.setdefault('input', 'wm_touch', 'wm_touch')
                Config.setdefault('input', 'wm_pen', 'wm_pen')
            elif platform == 'linux':
                probesysfs = 'probesysfs'
                if _is_rpi:
                    probesysfs += ',provider=hidinput'
                Config.setdefault('input', '%(name)s', probesysfs)

            # input postprocessing configuration
            Config.setdefault('postproc', 'double_tap_distance', '20')
            Config.setdefault('postproc', 'double_tap_time', '250')
            Config.setdefault('postproc', 'ignore', '[]')
            Config.setdefault('postproc', 'jitter_distance', '0')
            Config.setdefault('postproc', 'jitter_ignore_devices',
                                   'mouse,mactouch,')
            Config.setdefault('postproc', 'retain_distance', '50')
            Config.setdefault('postproc', 'retain_time', '0')

            # default configuration for keyboard repeatition
            Config.setdefault('widgets', 'keyboard_layout', 'qwerty')
            Config.setdefault('widgets', 'keyboard_type', '')
            Config.setdefault('widgets', 'list_friction', '10')
            Config.setdefault('widgets', 'list_friction_bound', '20')
            Config.setdefault('widgets', 'list_trigger_distance', '5')

        elif version == 1:
            Config.remove_option('graphics', 'vsync')
            Config.set('graphics', 'maxfps', '60')

        elif version == 2:
            # was a version to automatically copy windows icon in the user
            # directory, but it's now not used anymore. User can still change
            # the window icon by touching the config.
            pass

        elif version == 3:
            # add token for scrollview
            Config.setdefault('widgets', 'scroll_timeout', '55')
            Config.setdefault('widgets', 'scroll_distance', '20')
            Config.setdefault('widgets', 'scroll_friction', '1.')

            # remove old list_* token
            Config.remove_option('widgets', 'list_friction')
            Config.remove_option('widgets', 'list_friction_bound')
            Config.remove_option('widgets', 'list_trigger_distance')

        elif version == 4:
            Config.remove_option('widgets', 'keyboard_type')
            Config.remove_option('widgets', 'keyboard_layout')

            # add keyboard token
            Config.setdefault('kivy', 'keyboard_mode', '')
            Config.setdefault('kivy', 'keyboard_layout', 'qwerty')

        elif version == 5:
            Config.setdefault('graphics', 'resizable', '1')

        elif version == 6:
            # if the timeout is still the default value, change it
            Config.setdefault('widgets', 'scroll_stoptime', '300')
            Config.setdefault('widgets', 'scroll_moves', '5')

        elif version == 7:
            # desktop bool indicating whether to use desktop specific features
            is_desktop = int(platform in ('win', 'macosx', 'linux'))
            Config.setdefault('kivy', 'desktop', is_desktop)
            Config.setdefault('postproc', 'triple_tap_distance', '20')
            Config.setdefault('postproc', 'triple_tap_time', '375')

        elif version == 8:
            if Config.getint('widgets', 'scroll_timeout') == 55:
                Config.set('widgets', 'scroll_timeout', '250')

        elif version == 9:
            Config.setdefault('kivy', 'exit_on_escape', '1')

        #elif version == 1:
        #   # add here the command for upgrading from configuration 0 to 1
        #
        else:
            # for future.
            break

        # Pass to the next version
        version += 1

    # Indicate to the Config that we've upgrade to the latest version.
    Config.set('kivy', 'config_version', KIVY_CONFIG_VERSION)

    # Now, activate log file
    Logger.logfile_activated = bool(Config.getint('kivy', 'log_enable'))

    # If no configuration exist, write the default one.
    if (not exists(kivy_config_fn) or need_save) and \
        'KIVY_NO_CONFIG' not in environ:
        try:
            Config.filename = kivy_config_fn
            Config.write()
        except Exception as e:
            Logger.exception('Core: Error while saving default config file')

redpajama_set_name: RedPajamaGithub


And I hate to say it, but yet another ofthe Khao Yai courses that needs a bit of a boot up the rear end. At least Forest Hills has put some effort into maintenance and trying to accommodate golfers. They survive by hosting numerous tour groups of Korean golfers and weekend play, but it's oh so local service and nothing to write home about. Still, a good course that's probably worth the money.
Cheap weekdays and although the lodge needs some upgrades, most would still be happy taking a weekend away to play some golf in some very quiet surroundings.


Placing an order to purchase items using our website confirms your complete agreement, understanding and acceptance that you will buy the items for the price stated, subject to all terms and conditions as set out by PhoneSwap. By ordering you are providing details which are true, accurate, current and complete and that the credit/debit card, PayPal and bank details are correct and your own.
We will confirm receipt of your order by sending you an email summarizing the details of your order ("Order Confirmation E-mail"); this is the point at which we accept your order and the contract is formed.
You may pay for the items which you order online by PayPal (in which situation you will be redirected to the secure PayPal website) or bank transfer (we will email you the bank details you will need to use on your online banking to proceed with the payment). We regret that we cannot accept cheques, gift vouchers or cash as payment online.
When you place your order, our system automatically asks your card issuer for authorisation for this amount. If we get a valid authorisation, your card issuer will hold this value expecting a charge from us. Receipt of your credit card details and debit of payments does not constitute our acceptance of your order. Your card details are not kept in our system.
Please note that we cannot guarantee the security of data when communicate with us via email. Accordingly please do not send us payment information using email. Unless we are fraudulent or negligent we will not be liable to you for any losses caused as a result of unauthorised access to the personal and transactional information you provide us when placing an order.
Phone-Swap.co.uk does not hold any card details on the server or database.
WHAT DELIVERY METHODS ARE AVAILABLE ON YOUR WEBSITE?
Phone-Swap.co.uk will make every effort to dispatch your order within the time stated below, however Royal Mail for actual delivery and we cannot be held responsible for any delays caused by them nor will we be liable for any loss or disappointment caused to you by late delivery.
Phone-Swap.co.uk will not be able to issue refunds on any delivery services once these have been completed. All orders placed and paid for are dispatched the same day or the next working day, subject to stock availability and security checks. Your order will be delivered to the address you provide to us, therefore you must ensure that all details are full and correct, including postcode and house number. Phone-Swap.co.uk will not be held responsible for any loss, undelivered or returned parcels due to incorrect or incomplete details supplied by you.
HOW TO PICK UP - COLLECTION IN PERSON?
Yes you can collect your Gadget in person from our shop based in East London and the address is 138 High Street Walthamstow London E17 7JS Ph. 0208 520 4965.
HOW CAN I CANEL AN ORDER?
If you wish to cancel your order, please contact us as soon as possible. As we try to process orders immediately it may not always be possible to prevent an order from being despatched.
If your order has already been dispatched you may return the items to us in accordance with our Returns Policy (below) and we will proceed to refund the entire amount you have paid (excluding delivery fees).
If your order hasn't been dispatched, we will refund the entire amount you have paid (including delivery fees).
HOW TO RETURN A FAULTY OR UNWANTED GADGET?
You have the right to return a faulty or unwanted item within 14 days with its RMA form. Please note, that we reserve the right to refuse the warranty return due to physical damage caused by the customer during while in your possession.
Phone-Swap.co.uk will test all items returned and will proceed to send a replacement item within 7 working days. If the replacement item is out of stock at the time, we will contact you to arrange a refund.
An RMA form is required for any item which has been invoiced and you wish to return to us. You can register an RMA form by following these simple steps: login on our website, click My Account, click RMA in the list to the left side of your screen and click Request New RMA.
On the new RMA form you will need to select the reference number of the order containing the item(s) you wish to return and provide a reason for returning it. Once you are done, the website will generate a PDF file with all the details you have provided. Please print this form and send it to us together with the items you wish to return.
WHAT TO DO IF GADETS DAMAGED IN TRANSIT OR SEAL IS BROKEN?
In the event of a parcel being visibly damaged on delivery, do not accept the delivery. Once you have signed for the damaged parcel you are responsible for the damage and Phone-Swap.co.uk will be unable to refund you for the delivery fees.
If you notice the damage on the parcel after accepting the delivery, take pictures to clearly show the damage before opening the parcel. All/any photos that serve as proof of damage on delivery must be sent to us as soon as possible. E-mail any useful details together with the photos to info@phone-swap.co.uk.
Based on the proof you can provide we will be able to file a claim with the delivery service provider and request a refund for you.
Proceed to register an RMA form for the damaged item and return it to us. In the event of an undamaged parcel but the containing goods arrive damaged, please contact us as soon as possible and register an RMA form as explained above.
HOW TO RETURN FAULTY GADETS?
You have the right to return a faulty item within 14 days with its RMA form. Please return any faulty item to our address, we will replace or refund you for the faulty item upon receiving the returned goods.
HOW TO RETURN INCORRECT GADETS?
If we have sent you an incorrect item, please notify us as soon as possible and return the incorrect item to us with the copy of invoice. If you would like us to replace the incorrect item with the item you ordered we will send you the correct item as soon as possible or alternatively we will refund the item once it has been returned (excluding delivery fees).
HOW TO RETURN UNWANTED GADETS?
We aim to ensure that you are entirely satisfied every time you place an order online. If you are unhappy with an item when you receive it or if you simply change your mind please return it to us unused and undamaged, having taken reasonable care of it and complete with product packaging, instructions and all components within 14 days from date of receipt for a refund of the purchase price.
The amount to be refunded by Phone-Swap.co.uk will be confirmed via e-mail as there will be a 20% restocking fee applied to the value of the item (excluding delivery fees) Until you return items to us you are responsible for their safe keeping and taking reasonable care of them.
I'VE RETURNED MY PRODUCT. WHEN WILL I RECEIVE A REPLACEMENT OR REFUND?
We aim to provide you with a replacement or refund on the same day that we receive your item back. If we receive the products after 3pm then this will be processed on the next working day.
IF I REQUIRE A REPLACEMENT, CAN I HAVE A DIFFERENT PRODUCT THAN THE ORIGINAL ORDER?
We don't currently have the ability to change an order once this is complete. What we can do in this event is provide you with a full refund and re-process the order.
WHAT IF MY ITEM DOES'T ARRIVE WITHIN 48 HOURS?
If you still haven't received your item within 48 hours of your estimated delivery date, please contact our Customer Services team on 0208 520 4965.
WHAT TO DO IF MY PHONE OR TABLET BECOMES BLOKED OR BLACKLISTED?
In the unlikely event that your gadget becomes blocked or blacklisted, please contact our Customer Services team on 0208 520 4965 to arrange a replacement product.
HOW TO CREAT AN ACCOUNT?
You may register with us when purchasing items using our website. Please ensure the details you provide us with on registration are correct and complete. You can access and update your details anytime using the "My Account".
We may not have anyone registered using that email address. You need to use the email address that you registered with us.
You may have forgotten your password. If so, please select "forgotten my password" from the login screen.
You may not have created an account. If you completed your transaction as a guest you won't have access to your account. If you wish to create an account, please contact our Customer Services team on 0208 520 4965..
We may be experiencing some technical difficulties. Please try reloading the page and trying again.
If none of these options fix the issue, please contact our Customer Services team on 0208 520 4965.
If you didn't create an account at the end of your purchase, you won't have a password. If you wish to track the status of your order you'll need to contact our Customer Services team on 0208 520 4965.
No, we don't currently have the ability to accept card payments over the telephone. All orders must be placed via the website using our secure payments system.
WHAT DO I DO IF MY PHONE OR TABLET DEVELOPS A FAULT DURING THE WARRANTY PERIOD?
If the unexpected happens and your phone or tablet develops a problem within your warranty period, please contact our Customer Services team on 0208 520 4965.
Phone-Swap.co.uk offer a 6 month warranty on all phones and tablets purchased via the website. This will take effect from the dispatch date of the product.
In the unlikely event that you experience any technical problems with your product, the item's warranty covers internal, technical issues only. Physical damaged caused to the item after receipt by the Customer, is not covered by the product warranty (which is included with the purchased item's packaging).
Examples of technical internal problems that are covered by warranty include issues with: Microphone, Camera, Wi-Fi, internal speaker etc.
The item must be returned in the sale condition. The item must be returned with all its accessories present should the item fail to meet these conditions, it will be returned to the Consumer, at his/her expense.
HOW DO WE GRADE YOUR PHONE AND TABLETS?
Brand new phone with sealed original box and accessories.
New phone with original box and accessories.
Cosmetically the phone will show signs of use, including some minor scratches to the screen and casing.
All of our products have been tested by a gadget specialist and quality checked before being dispatched.