text:
import re
from six import string_types  # for 2-3 compatibility
import types
from numbers import Number

import pdb  # for debugging only

### Exception Classes --------------------------------------------------------

class SchemaError(Exception):
    pass

class SchemaMismatch(Exception):

    def __init__(self, message, schema, error=None):
        Exception.__init__(self, message)
        self.type = schema.subname()
        self.error = error

class TypeMismatch(SchemaMismatch):

    def __init__(self, schema, data):
        message = 'must be of type {} (was {})'.format(
            schema.subname(),
            type(data).__name__
            )

        SchemaMismatch.__init__(self, message, schema, 'type')
        self.expected_type = schema.subname()
        self.value = type(data).__name__

class ValueMismatch(SchemaMismatch):

    def __init__(self, schema, data):

        message = 'must equal {} (was {})'.format(
            repr(schema.value),
            repr(data)
            )

        SchemaMismatch.__init__(self, message, schema, 'value')
        self.expected_value = schema.value
        self.value = data

class RangeMismatch(SchemaMismatch):

    def __init__(self, schema, data):

        message = 'must be in range {} (was {})'.format(
            schema.range,
            data
            )

        SchemaMismatch.__init__(self, message, schema, 'range')
        self.range = schema.range
        self.value = data

class LengthRangeMismatch(SchemaMismatch):

    def __init__(self, schema, data):
        length_range = Range(schema.length)

        if not hasattr(length_range, 'min') and \
                not hasattr(length_range, 'min_ex'):
            length_range.min = 0

        message = 'length must be in range {} (was {})'.format(
            length_range,
            len(data)
            )

        SchemaMismatch.__init__(self, message, schema, 'range')
        self.range = schema.length
        self.value = len(data)

class MissingFieldMismatch(SchemaMismatch):

    def __init__(self, schema, fields):

        if len(fields) == 1:
            message = 'missing required field: {}'.format(
                repr(fields[0])
                )
        else:
            message = 'missing required fields: {}'.format(
                ', '.join(fields)
                )
            if len(message) >= 80:  # if the line is too long
                message = 'missing required fields:\n{}'.format(
                    _indent('\n'.join(fields))
                    )

        SchemaMismatch.__init__(self, message, schema, 'missing')
        self.fields = fields

class UnknownFieldMismatch(SchemaMismatch):

    def __init__(self, schema, fields):

        if len(fields) == 1:
            message = 'unknown field: {}'.format(
                repr(fields[0])
                )
        else:
            message = 'unknown fields: {}'.format(
                ', '.join(fields)
                )
            if len(message) >= 80:  # if the line is too long
                message = 'unknown fields:\n{}'.format(
                    _indent('\n'.join(fields))
                    )

        SchemaMismatch.__init__(self, message, schema, 'unexpected')
        self.fields = fields

class SeqLengthMismatch(SchemaMismatch):
    def __init__(self, schema, data):

        expected_length = len(schema.content_schema)
        message = 'sequence must have {} element{} (had {})'.format(
            expected_length,
            's'*(expected_length != 1),  # pluralization
            len(data)
            )

        SchemaMismatch.__init__(self, message, schema, 'size')
        self.expected_length = expected_length
        self.value = len(data)

class TreeMismatch(SchemaMismatch):

    def __init__(self, schema, errors=[], child_errors={}, message=None):

        ## Create error message

        error_messages = []

        for err in errors:
            error_messages.append(str(err))

        for key, err in child_errors.items():

            if isinstance(key, int):
                index = '[item {}]'.format(key)
            else:
                index = '{}'.format(repr(key))

            if isinstance(err, TreeMismatch) and \
                    not err.errors and len(err.child_errors) == 1:

                template = '{} > {}'

            else:
                template = '{} {}'

            msg = template.format(index, err)
            error_messages.append(msg)

        if message is None:
            message = 'does not match schema'

        if len(error_messages) == 1:
            msg = error_messages[0]

        else:
            msg = '{}:\n{}'.format(
                message,
                _indent('\n'.join(error_messages))
                )

        SchemaMismatch.__init__(self, msg, schema, 'multiple')
        self.errors = errors
        self.child_errors = child_errors

def _createTreeMismatch(schema, errors=[], child_errors={}, message=None):
    if len(errors) == 1 and not child_errors:
        return errors[0]
    else:
        return TreeMismatch(schema, errors, child_errors, message)

### Utilities ----------------------------------------------------------------

class Range(object):

    def __init__(self, opt):
        if isinstance(opt, Range):
            for attr in ('min', 'max', 'min_ex', 'max_ex'):
                if hasattr(opt, attr):
                    setattr(self, attr, getattr(opt, attr))
        else:

            if not {'min', 'max', 'min-ex', 'max-ex'}.issuperset(opt):
                raise ValueError("illegal argument to make_range_check")

            if {'min', 'min-ex'}.issubset(opt):
                raise ValueError(
                    "Cannot define both exclusive and inclusive min"
                )

            if {'max', 'max-ex'}.issubset(opt):
                raise ValueError(
                    "Cannot define both exclusive and inclusive max"
                )

            for boundary in ('min', 'max', 'min-ex', 'max-ex'):
                if boundary in opt:
                    attr = boundary.replace('-', '_')
                    setattr(self, attr, opt[boundary])

    def __call__(self, value):
        INF = float('inf')

        def get(attr, default):
            getattr(self, attr, default)

        return(
                get('min',    -INF) <= value and
                get('max',     INF) >= value and
                get('min_ex', -INF) <  value and
                get('max_ex',  INF) >  value
                )

    def __str__(self):
        if hasattr(self, 'min'):
            s = '[{}, '.format(self.min)
        elif hasattr(self, 'min_ex'):
            s = '({}, '.format(self.min_ex)
        else:
            s = '(-Inf, '

        if hasattr(self, 'max'):
            s += '{}]'.format(self.max)
        elif hasattr(self, 'max_ex'):
            s += '{})'.format(self.max_ex)
        else:
            s += 'Inf)'

        return s

def _indent(text, level=1, whitespace='  '):
        return '\n'.join(whitespace*level+line for line in text.split('\n'))

### Schema Factory Class -----------------------------------------------------

class Factory(object):
    def __init__(self, register_core_types=True):
        self.prefix_registry = {
            '':      'tag:codesimply.com,2008:rx/core/',
            '.meta': 'tag:codesimply.com,2008:rx/meta/',
        }

        self.type_registry = {}
        if register_core_types:
            for t in core_types:
                self.register_type(t)

    @staticmethod
    def _default_prefixes(): pass

    def expand_uri(self, type_name):
        if re.match('^\w+:', type_name):
            return type_name

        m = re.match('^/([-._a-z0-9]*)/([-._a-z0-9]+)$', type_name)

        if not m:
            raise ValueError(
                "couldn't understand type name '{}'".format(type_name)
            )

        prefix, suffix = m.groups()

        if prefix not in self.prefix_registry:
            raise KeyError(
                "unknown prefix '{0}' in type name '{}'".format(prefix,
                                                                type_name)
            )

        return self.prefix_registry[prefix] + suffix

    def add_prefix(self, name, base):
        if self.prefix_registry.get(name):
            raise SchemaError(
                "the prefix '{}' is already registered".format(name)
            )

        self.prefix_registry[name] = base

    def register_type(self, t):
        t_uri = t.uri()

        if t_uri in self.type_registry:
            raise ValueError("type already registered for {}".format(t_uri))

        self.type_registry[t_uri] = t

    def learn_type(self, uri, schema):
        if self.type_registry.get(uri):
            raise SchemaError(
                "tried to learn type for already-registered uri {}".format(uri)
                )

        # make sure schema is valid
        # should this be in a try/except?
        self.make_schema(schema)

        self.type_registry[uri] = {'schema': schema}

    def make_schema(self, schema):
        if isinstance(schema, string_types):
            schema = {'type': schema}

        if not isinstance(schema, dict):
            raise SchemaError('invalid schema argument to make_schema')

        uri = self.expand_uri(schema['type'])

        if not self.type_registry.get(uri):
            raise SchemaError("unknown type {}".format(uri))

        type_class = self.type_registry[uri]

        if isinstance(type_class, dict):
            if not {'type'}.issuperset(schema):
                raise SchemaError(
                    'composed type does not take check arguments'
                )
            return self.make_schema(type_class['schema'])
        else:
            return type_class(schema, self)

std_factory = None

def make_schema(schema):
    global std_factory
    if std_factory is None:
        std_factory = Factory()
    return std_factory.make_schema(schema)

### Core Type Base Class -------------------------------------------------

class _CoreType(object):
    @classmethod
    def uri(self):
        return 'tag:codesimply.com,2008:rx/core/' + self.subname()

    def __init__(self, schema, rx):
        if not {'type'}.issuperset(schema):
            raise SchemaError('unknown parameter for //{}'.format(self.subname()))

    def check(self, value):
        try:
            self.validate(value)
        except SchemaMismatch:
            return False
        return True

    def validate(self, value):
        raise SchemaMismatch('Tried to validate abstract base schema class', self)

### Core Schema Types --------------------------------------------------------

class AllType(_CoreType):
    @staticmethod
    def subname(): return 'all'

    def __init__(self, schema, rx):
        if not {'type', 'of'}.issuperset(schema):
            raise SchemaError('unknown parameter for //all')

        if not schema.get('of'):
            raise SchemaError('no alternatives given in //all of')

        self.alts = [rx.make_schema(s) for s in schema['of']]

    def validate(self, value):
        errors = []
        for schema in self.alts:
            try:
                schema.validate(value)
            except SchemaMismatch as e:
                errors.append(e)

        if errors:
            raise _createTreeMismatch(self, errors)

class AnyType(_CoreType):
    @staticmethod
    def subname(): return 'any'

    def __init__(self, schema, rx):
        self.alts = None

        if not {'type', 'of'}.issuperset(schema):
            raise SchemaError('unknown parameter for //any')

        if 'of' in schema:
            if not schema['of']:
                raise SchemaError('no alternatives given in //any of')

            self.alts = [rx.make_schema(alt) for alt in schema['of']]

    def validate(self, value):
        if self.alts is None:
            return

        errors = []

        for schema in self.alts:
            try:
                schema.validate(value)
                break
            except SchemaMismatch as e:
                errors.append(e)

        if len(errors) == len(self.alts):
            message = 'must satisfy at least one of the following'
            raise _createTreeMismatch(self, errors, message=message)

class ArrType(_CoreType):
    @staticmethod
    def subname(): return 'arr'

    def __init__(self, schema, rx):
        self.length = None

        if not {'type', 'contents', 'length'}.issuperset(schema):
            raise SchemaError('unknown parameter for //arr')

        if not schema.get('contents'):
            raise SchemaError('no contents provided for //arr')

        self.content_schema = rx.make_schema(schema['contents'])

        if schema.get('length'):
            self.length = Range(schema['length'])

    def validate(self, value):
        if not isinstance(value, (list, tuple)):
            raise TypeMismatch(self, value)

        errors = []
        if self.length and not self.length(len(value)):
            err = LengthRangeMismatch(self, value)
            errors.append(err)

        child_errors = {}

        for key, item in enumerate(value):
            try:
                self.content_schema.validate(item)
            except SchemaMismatch as e:
                child_errors[key] = e
        if errors or child_errors:
            raise _createTreeMismatch(self, errors, child_errors)

class BoolType(_CoreType):
    @staticmethod
    def subname(): return 'bool'

    def validate(self, value,):
        if not isinstance(value, bool):
            raise TypeMismatch(self, value)

class DefType(_CoreType):
    @staticmethod
    def subname(): return 'def'

    def validate(self, value):
        if value is None:
            raise TypeMismatch(self, value)

class FailType(_CoreType):
    @staticmethod
    def subname(): return 'fail'

    def check(self, value): return False

    def validate(self, value):
        raise SchemaMismatch(
            'is of fail type, automatically invalid.',
            self,
            'fail'
            )

class IntType(_CoreType):
    @staticmethod
    def subname(): return 'int'

    def __init__(self, schema, rx):
        if not {'type', 'range', 'value'}.issuperset(schema):
            raise SchemaError('unknown parameter for //int')

        self.value = None
        if 'value' in schema:
            if not isinstance(schema['value'], Number) or \
                    schema['value'] % 1 != 0:
                raise SchemaError('invalid value parameter for //int')
            self.value = schema['value']

        self.range = None
        if 'range' in schema:
            self.range = Range(schema['range'])

    def validate(self, value):
        if not isinstance(value, Number) or isinstance(value, bool) or \
                value % 1 != 0:
            raise TypeMismatch(self, value)

        if self.range and not self.range(value):
            raise RangeMismatch(self, value)

        if self.value is not None and value != self.value:
            raise ValueMismatch(self, value)

class MapType(_CoreType):
    @staticmethod
    def subname(): return 'map'

    def __init__(self, schema, rx):
        self.allowed = set()

        if not {'type', 'values'}.issuperset(schema):
            raise SchemaError('unknown parameter for //map')

        if not schema.get('values'):
            raise SchemaError('no values given for //map')

        self.value_schema = rx.make_schema(schema['values'])

    def validate(self, value):
        if not isinstance(value, dict):
            raise TypeMismatch(self, value)

        child_errors = {}

        for key, val in value.items():
            try:
                self.value_schema.validate(val)
            except SchemaMismatch as e:
                child_errors[key] = e

        if child_errors:
            raise _createTreeMismatch(self, child_errors=child_errors)

class NilType(_CoreType):
    @staticmethod
    def subname(): return 'nil'

    def check(self, value): return value is None

    def validate(self, value):
        if value is not None:
            raise TypeMismatch(self, value)

class NumType(_CoreType):
    @staticmethod
    def subname(): return 'num'

    def __init__(self, schema, rx):
        if not {'type', 'range', 'value'}.issuperset(schema):
            raise SchemaError('unknown parameter for //num')

        self.value = None
        if 'value' in schema:
            if not isinstance(schema['value'], Number):
                raise SchemaError('invalid value parameter for //num')
            self.value = schema['value']

        self.range = None

        if schema.get('range'):
            self.range = Range(schema['range'])

    def validate(self, value):
        if not isinstance(value, Number) or isinstance(value, bool):
            raise TypeMismatch(self, value)

        if self.range and not self.range(value):
            raise RangeMismatch(self, value)

        if self.value is not None and value != self.value:
            raise ValueMismatch(self, value)

class OneType(_CoreType):
    @staticmethod
    def subname(): return 'one'

    def validate(self, value):
        if not isinstance(value, (Number, string_types)):
            raise TypeMismatch(self, value)

class RecType(_CoreType):
    @staticmethod
    def subname(): return 'rec'

    def __init__(self, schema, rx):
        if not {'type', 'rest', 'required', 'optional'}.issuperset(schema):
            raise SchemaError('unknown parameter for //rec')

        self.known = set()
        self.rest_schema = None
        if schema.get('rest'):
            self.rest_schema = rx.make_schema(schema['rest'])

        for which in ('required', 'optional'):
            setattr(self, which, {})
            for field in schema.get(which, {}).keys():
                if field in self.known:
                    raise SchemaError(
                        '%s appears in both required and optional' % field
                        )

                self.known.add(field)

                self.__getattribute__(which)[field] = rx.make_schema(
                    schema[which][field]
                )

    def validate(self, value):
        if not isinstance(value, dict):
            raise TypeMismatch(self, value)

        errors = []
        child_errors = {}

        missing_fields = []

        for field in self.required:

            if field not in value:
                missing_fields.append(field)
            else:
                try:
                    self.required[field].validate(value[field])
                except SchemaMismatch as e:
                    child_errors[field] = e

        if missing_fields:
            err = MissingFieldMismatch(self, missing_fields)
            errors.append(err)

        for field in self.optional:
            if field not in value:
                continue

            try:
                self.optional[field].validate(value[field])
            except SchemaMismatch as e:
                child_errors[field] = e

        unknown = [k for k in value.keys() if k not in self.known]

        if unknown:
            if self.rest_schema:
                rest = {key: value[key] for key in unknown}
                try:
                    self.rest_schema.validate(rest)
                except SchemaMismatch as e:
                    errors.append(e)
            else:
                fields = _indent('\n'.join(unknown))
                err = UnknownFieldMismatch(self, unknown)
                errors.append(err)

        if errors or child_errors:
            raise _createTreeMismatch(self, errors, child_errors)

class SeqType(_CoreType):
    @staticmethod
    def subname(): return 'seq'

    def __init__(self, schema, rx):
        if not {'type', 'contents', 'tail'}.issuperset(schema):
            raise SchemaError('unknown parameter for //seq')

        if not schema.get('contents'):
            raise SchemaError('no contents provided for //seq')

        self.content_schema = [rx.make_schema(s) for s in schema['contents']]

        self.tail_schema = None
        if (schema.get('tail')):
            self.tail_schema = rx.make_schema(schema['tail'])

    def validate(self, value):
        if not isinstance(value, (list, tuple)):
            raise TypeMismatch(self, value)

        errors = []

        if len(value) != len(self.content_schema):
            if len(value) > len(self.content_schema) and self.tail_schema:
                try:
                    self.tail_schema.validate(value[len(self.content_schema):])
                except SchemaMismatch as e:
                    errors.append(e)
            else:
                err = SeqLengthMismatch(self, value)
                errors.append(err)

        child_errors = {}

        for index, (schema, item) in \
                enumerate(zip(self.content_schema, value)):
            try:
                schema.validate(item)
            except SchemaMismatch as e:
                child_errors[index] = e

        if errors or child_errors:
            raise _createTreeMismatch(self, errors, child_errors)

class StrType(_CoreType):
    @staticmethod
    def subname(): return 'str'

    def __init__(self, schema, rx):
        if not {'type', 'value', 'length'}.issuperset(schema):
            raise SchemaError('unknown parameter for //str')

        self.value = None
        if 'value' in schema:
            if not isinstance(schema['value'], string_types):
                raise SchemaError('invalid value parameter for //str')
            self.value = schema['value']

        self.length = None
        if 'length' in schema:
            self.length = Range(schema['length'])

    def validate(self, value):
        if not isinstance(value, string_types):
            raise TypeMismatch(self, value)

        if self.value is not None and value != self.value:
            raise ValueMismatch(self, self)

        if self.length and not self.length(len(value)):
            raise LengthRangeMismatch(self, value)

core_types = [
    AllType,  AnyType, ArrType, BoolType, DefType,
    FailType, IntType, MapType, NilType,  NumType,
    OneType,  RecType, SeqType, StrType
]

redpajama_set_name: RedPajamaGithub


The Grade 2 Pavilion in Yaverland is a testament to engineering ingenuity. Constructed in 1936 as pumphouse for Browns golf course & power station for its club & café, it became part of the secret wartime PLUTO enterprise hidden across Sandown Bay.
The Pavilion building was nearing collapse, the roof and walls had slumped and one of its 3 rooms had filled with water. But its pumps and generators and switchboards remained intact along with so much of the workaday bits and pieces of its long history. Thanks to the support of funders, volunteers and local historians, a programme of careful repair and reconstruction began in 2016. Two years on and the building is once again intact and fit for the future! In 2017, Age UK, working with the Bay Coastal Community Team, recruited a group of fantastic and skilled volunteers through the Men in Sheds project. For the past 12 months the team has been painstakingly restoring the engines and machines within the Pavilion building, even making replica and replacement parts to the original specifications.
Come and meet the Men in Sheds, take a look inside the Pavilion and hear the story of its life and times including the Pipeline Under The Ocean that fuelled the D-Day landings and changed the course of WW2.
Celebrating Sandown is brought to you by The Common Space, the Bay Coastal Community Team, Wild About Wight, Down to the Coast, Isle of Wight Council Conservation Team, Arc Consulting, Browns Golf Course, Isle of Wight Men In Sheds, Age UK and Quay Arts. Look out for Heritage Open Weekend Activities celebrating Sandown from Browns to Battery Gardens!


Ballestas Island is the name of Islands means Crosbow , so named according to local fishermen. The group of three Islands has norrow shorelines and cliffs that rise to flan areas that cover an area of 3.2 square Kilometers. In the breeding season this is where birds build their nests with their own droppings. These droppings, the famous guano fertilizer, are harvested every 4-7 years. The boat trip to Ballestas Island provides an opportunity to easily watch resident and migratory birds , including flamingos , Red-Legged , Cormorants ,Inca Terns Bobbies,as well as playful sea Lions ,amusing Humboldt penguins and, we are lucky ,we might see marine otters and the bird with the largest winspan in the world , The Condor which flies down from the Andes in search of food.
Around 7:30AM we will pick you up from your hotel in Pisco/Paracas and then transfer to the wharf of the Beach the Chaco - Paracas. Speedboat excursion to Ballestas Islands. During navigation the bay is surrounded and the port is appraised San Martín, soon the Mysterious figure of Candelabrum, Ballestas Islands the deposits of Marine Wolves, Guaneras seabirds have an interview that in their natural habitat constitute, by their capricious and beautiful forms, sea lions, penguins, and beautiful landscapes of the Peruvian Coast.
After two hours and half of tour will be the our return to the wharf and free time.
To opportune hour to come back to Pisco or tranfers back to Puerto San Martin if you have arranged this additional service.


This specific is certainly Hawtree Upholstered Panel Headboard by Mercer41 Sale Brand New for the favorite. Here you will find affordable product information. One more selection for your online buying. Due to everyone who came to see us to view our products.
Students who graduate with a master's degree in engineering will enter the workforce certified for most entry-level jobs in their distinct field, as well as best-level roles. The ideal on the web master's in engineering programs prepare students for further career steps, such as the necessary state license for certain managerial positions in mechanical, civil and aerospace engineering.
Anchor a space with a conventional rug and accessories, and then juxtapose them with modern art for a fresh feel. The hues of this heirloom rug play off of the colors of the bottle-cap portrait above the fireplace. You can opt for antique items such as chests, chandeliers, or richly developed upholstery furnishing, or aim for much more contemporary house d?cor items such as furniture produced up of glass, wood, chrome, and steel.
Cabin style interiors are frequently represented with wood and stone fireplaces and so does these style. Vintage furnishings and wood planks on the floor, ceiling and wall are visibly producing this authentic and rugged. Please note that, by altering locations, your purchasing cart will be emptied automatically. Our Canadian site only ships to Canada, while our US site only ships to the US.


111 Web Studio | A division of ICG Link, Inc. .
Our professional designers and programmers build websites that look great and deliver results. 111 Web Studio is a full-service website design and programming shop delivering all levels of on-line web presence from full featured template-driven content managed website builders to high end custom website design. We can create your perfect custom on-line app or business system with sophisticated, complex programming while maintaining a smooth, intuitive user interface.
Our responsive, competent team has years of web design and user interface experience. They take the time to understand your needs and provide honest feedback so you will end up with something visually special and uniquely suited to your requirements. Custom graphics and intuitive user experience are combined with easy-to-use content management, all the while meeting your timelines and goals.
When the software you need just doesn't exist off-the-shelf or requires too much compromise to meet your needs, 111 Web Studio can help. We will create a unique online custom web solution that will solve your problem, achieve your goal or grasp that next opportunity for you. Our extensive experience combined with your unique vision will yield the solid results you've been seeking.
We know your goal is a current, tasteful, high-impact web design. Our professionals will listen to your needs and apply their experience, skills and creativity to achieve your dreams.
If it's important for your web site to be found on search engines, we know all the things necessary to make that happen and can help you do it without breaking the bank.
We manage your social media for you so you can concentrate on your business. This effort is tailored to your industry and your business specifically for best results.
We collaborate with you to determine just what content will be most effective for reaching your target markets. Then we either help you write it or we write it for you.
Reach your audience with custom, personalized email messages or newsletters and track your campaign results with our easy to use eBlast111 email marketing tool.
You have the products and product knowledge; We have the online experience and technical skills. Together, we can maximize your sales as well as your bottom line.
Don't pay a web developer to make changes and updates to your website. Do them yourself using our full-featured CMS and we will train you how to do it for free.
Reliable, flexible virtual hosting with PHP or ColdFusion gets you on the web and keeps you going 24/7/365. Make the most of our cloud solutions for your virtual machines.
Business web site builder with flexible design and easy editing.
Church web site builder with church features and easy editing.
Email marketing campaigns made simple, low cost and easy to use.
Effective hassle free spam filtering with adjustable quarantine.
On-line sponsorship packet for your non-profit fundraising effort.


I have been collecting notes for a study of the treason of interpreters. This may not make it into my dissertation, but I find the topic fascinating. In the history of collaboration, interpreters often figure prominently. They speak for the occupier, they ask questions for him, they feed him the information he needs to establish and maintain power. They usually come to their position by virtue of their language abilities, but very often such abilities are the product of a long and deep intimacy with the culture and people of the occupier, either through prolonged residence or study in the occupier's country, personal relationships, or a hybrid identity.
These treasonous interpreters are often portrayed as the quintessential running dogs of the enemy, groveling selfish figures standing just behind their master who sell out their nation for whatever benefits might come their way. It is not surprising, then, to find them a major target of attack by insurgents. Interpreters for the Israelis in Gaza, for the Americans in Iraq, Afghanistan and elsewhere, for the Japanese in China and Korea, indeed everywhere, including hated German-Norwegians who interpreted for the German occupation in my own hometown in Stavanger, are often tried as traitors in the aftermath of a conflict, but are also frequently the victims of brutal assassinations and torture by forces of the resistance.
Of course, the language skills of these interpreters are not necessarily indicative of their sympathy for the enemy. Like any other collaborator who freely chooses or are, to various degrees, coerced into working for the occupation, these interpreters often merely see themselves as continuing their trade, or making use of suddenly useful skill. I think this observation can cut both ways: their constant visual proximity and ability to speak for the invader has led to a demonization of interpreters that is well out of proportion to their crime, when seen as a kind of trade of services for the enemy (as opposed to helping them run puppet regimes, for example, or carry out acts of violence on their behalf). On the other hand, as with everyone else whose continued provision of the services of labor and goods to an occupier or other enemy in wartime enable it to maintain its power, the consequences have moral implications.1 Now let us look at one case that offers what I think is a rather typical case of the most common twists and turns in the career of a treasonous interpreter.
Kim, who spoke good English, served the US forces for a time as an interpreter for the 2nd infantry division. Then, captured by Chinese forces he eventually found himself face to face with an aggressive North Korean soldier in an interaction that could have gone much worse for him than it did.
"Comrade," the [Korean-Chinese] interpreter began, "Would you be kind enough to interpret in English for us.
In an amazingly frank exchange, if true, between this prisoner and the North Korean commandant, the latter said he was a college student in Japan during the war, when he was conscripted into the Japanese military. He was eventually captured by American forces in the Philippines who, despite the Japanese propaganda suggesting otherwise, he found to be "very civilized."9 After returning to Korea he was a professor for a time but moved north to see the workings of Communism himself. Here was a Japanese trained North Korean camp commandant in charge of the imprisonment and interrogation of American forces, which he had once himself been a prisoner of.
"Eating greedily he looked curiously at my concise English-Korean dictionary on the shelf. 'The language of an occupying army is a meal ticket, you know.' He smiled faintly" (Kim, Home Again (1945) 27).
In The Will of a Traitor, posted next door at 井底之蛙, I write about the controversial will of China's most famous collaborator, and an interesting English translation of the text by Kim Bonggi, one of the founders of a newspaper that eventually became today's Korea Herald.
Final exams crash onto my desk tomorrow, but I'm as organized as I can be in advance, so I thought I'd do a little belated AAS blogging, especially about the pair of panels on Saturday commemorating the centennial of Japan's annexation of Korea and the 50th anniversary of Hilary Conroy's groundbreaking study of same.
Yet the costly Iraq war must also be recognised as a sideshow in the Bush global counteroffensive against Islamist militancy, just as the far more costly Korean war was a sideshow to global cold war containment.
So says Edward Luttwak, in an extensive attempt to speed up the process by which History justifies and valorizes the policies of this administration. [via] He's mostly engaged in a bit of dramatic post hoc, ergo propter hoc whereby a shift in government policies towards extremist Islamic groups is the result of Pres. Bush's Trumanesque firmness, but the damage done to the success — military and diplomatic — of the initial Afghanistan campaign by the Iraq campaign isn't taken into account at all.1 The Korean war — which I have a lot of trouble seeing as a "sideshow," given the direct involvement of Chinese and Russian forces and a lot more actual shooting than in Europe — advanced the cause of anti-communism. It was a success, in the sense that it preserved South Korea as a non-communist state and it was the last full-scale conflict between the great powers for some time. The only sense in which Korea could be called a "sideshow" is that Truman's containment policy engaged a lot of other parts of the world as well.
He then goes on to mangle Chinese history — Tang, Song and Ming dynasties never conquered anyone, right? — and to cast the future of Asia in binaries (China: convergence or communist collapse? India: corruption stagnation or "traditional" good Brahmin governance?), as well as giving the administration credit for North Korean disarmament instead of noting their years of footdragging on same which have exacerbated the proliferation problem.
Concern is rising among Korean officials that China might try to assert taekwondo as its own homegrown sport.
Northeast Asia Project is an attempt to distort ancient Korean history in the northeastern territory of what is now China, including the Koguryo Kingdom (37 B.C.-A.D. 668) and the Palhae Kingdom (698-926).
"I was really upset to hear that the broadcaster at Changping Stadium in Beijing said taekwondo is a Chinese martial art, during the 2007 World Taekwondo Federation (WTF) Championships," he said.
"I feel really sorry that we have not tried to protect taekwondo while China is preparing for the event. Although many renovations have been under way inside the taekwondo governing body after new leaders like the president and general secretary took office, we still have a lot of things to do," said the 68-year-old taekwondo master, who resides in Germany.
It is a bit unfortunate that this blog hasn't covered the whole Koguryŏ history controversy in much greater detail. Fortunately though, the subject has produced plenty of good English-language commentary over the last six months or so. The stand out examples are Andrei Lankov's piece at Japan Focus; Yonson Ahn's article at History News Network; Andrew Leonard's introduction at Salon.com; and Choe Sang-hun in the International Herald Tribune. If you still want some more, I've managed to collect a variety of related internet resources in my del.icio.us links tagged Koguryŏ.
A couple of very interesting talks coming up at short notice for anyone who happens to be around in LA or Seoul in the next couple of days (or perhaps both if you're the jetsetting type).
This is a "dump": all the Asia related stuff I've saved over the last…. two months? Anyway, nobody else has blogged about it, so I thought I'd toss it out there. I hope to resume more … measured blogging soon.
Roy Berman, the MutantFrog himself, will host the next Asian History Carnival at Mutant Frog Travelogue on the 18th. Get your nominations in to him directly (roy dot berman at gmail dot com), through blogcarnival.com or with del.icio.us tags. Remember, if you don't submit anything, we may pick the worst thing you ever posted publicly….
Korean-American relations have always been tense says Daniel Sneider. This is an excellent brief survey of the last fifty years, a stark reminder that even our staunchest allies have minds of their own….
And in the "full employment for nationalist historians" category, Korea-China History Wars Continue, in anticipation of the collapse of North Korea. Or not, but they continue anyway.
Yonson Ahn's article in the latest Japan Focus tracks the historiography of the Korean/Manchurian Koguryo state up to the present "textbook wars." I've always found the division between the Silla-focused South Korean and Koguryo-focused North Korean scholarship quite interesting, and a very useful example for students of how contemporary politics can affect the historiography.
I don't have a strong opinion on this, but as someone who teaches East Asia it makes more sense to me to include it in Korean history where it can get more attention, than in Chinese history where we're already shoehorning in as much as humanly possible….


text:
namespace SSS_Windows_Forms
{
    partial class SplashScreen
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SplashScreen));
            this.pictureBox1 = new System.Windows.Forms.PictureBox();
            this.label1 = new System.Windows.Forms.Label();
            this.label2 = new System.Windows.Forms.Label();
            this.label3 = new System.Windows.Forms.Label();
            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
            this.SuspendLayout();
            //
            // pictureBox1
            //
            this.pictureBox1.Image = global::SSS_Windows_Forms.Properties.Resources.PointBlankIcon;
            this.pictureBox1.Location = new System.Drawing.Point(86, 78);
            this.pictureBox1.Name = "pictureBox1";
            this.pictureBox1.Size = new System.Drawing.Size(293, 280);
            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
            this.pictureBox1.TabIndex = 0;
            this.pictureBox1.TabStop = false;
            //
            // label1
            //
            this.label1.AutoSize = true;
            this.label1.Font = new System.Drawing.Font("Calibri", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.label1.Location = new System.Drawing.Point(158, 36);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(151, 39);
            this.label1.TabIndex = 1;
            this.label1.Text = "Welcome!";
            //
            // label2
            //
            this.label2.AutoSize = true;
            this.label2.Font = new System.Drawing.Font("Calibri", 20.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.label2.Location = new System.Drawing.Point(102, 361);
            this.label2.Name = "label2";
            this.label2.Size = new System.Drawing.Size(277, 33);
            this.label2.TabIndex = 2;
            this.label2.Text = "Student Support System";
            //
            // label3
            //
            this.label3.AutoSize = true;
            this.label3.Font = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.label3.Location = new System.Drawing.Point(355, 461);
            this.label3.Name = "label3";
            this.label3.Size = new System.Drawing.Size(85, 23);
            this.label3.TabIndex = 3;
            this.label3.Text = "Loading...";
            //
            // SplashScreen
            //
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.BackColor = System.Drawing.SystemColors.Control;
            this.ClientSize = new System.Drawing.Size(472, 506);
            this.Controls.Add(this.label3);
            this.Controls.Add(this.label2);
            this.Controls.Add(this.label1);
            this.Controls.Add(this.pictureBox1);
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
            this.MaximizeBox = false;
            this.MinimizeBox = false;
            this.Name = "SplashScreen";
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = "Welcome";
            this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.SplashScreen_FormClosed);
            this.Shown += new System.EventHandler(this.SplashScreen_Shown);
            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

        private System.Windows.Forms.PictureBox pictureBox1;
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.Label label2;
        private System.Windows.Forms.Label label3;
    }
}


We've all been there–you're hungry, but you mostly want something to snack on while you drink. A warm cookie, perhaps, or maybe some pretzels. OK, maybe you want a meal too. Whatever the case, some Chicago restaurants, cocktail bars, beer bars and other spots offer free eats while you imbibe.
Snack on free pretzels (they're next to the water) while you work your way through the beer offerings.
Monday through Thursday at 8:30pm, hunker on down to Burwood Tap for a game of pool over free wings. You can head over earlier to grab free popcorn too, if you're extra hungry.
Sit down at the large brewery or drop by for a tour and have a beer. You'll be greeted with free peanuts and pretzels as you drink, and the taproom also has a robust menu if you need more than that.
Thinking of spending your Sunday morning at this classic Chicago diner? Better check the weather: The line snakes out the door and onto Lou Mitchell Way well into the afternoon. But hey, customers are treated to fresh, sugar-dusted doughnut holes (and, if you're a woman, Milk Duds) while they wait.
Stop by to hang out and relax in the cozy tavern over a nice selection of craft beer and everyone's favorite beer snack–pretzel sticks.
Nestled right inside the Loop, grab a pint at Monk's to find a crowd of post-work imbibers. They'll give you peanuts to go with your beer, and you'll feel liberated as you throw the shells on the floor.
With a hefty list of craft beer on tap, come by the pub late at night when you can't quite sleep and receive free bacon after midnight Sunday through Thursday.
The well-made drinks at the sleek hotel bar come with free snacks, including seasoned mixed nuts and cheese crisps.
Cocktails reign supreme at Scofflaw. While the line can get long on the weekends, it's worth standing in to sip one of the restaurant's top concoctions. But make sure you stay around until midnight, when the staff serves freshly made chocolate chip cookies.
This Bucktown/Logan Square mainstay with almost 300 choices of beer serves free popcorn with your drink, offering a laid-back atmosphere for beer nerds and night owls alike.
The elegant hotel bar serves constantly replenished dishes of snacks, including olives and puffed corn, to munch on while you sip.
The comfortable South Loop brewery has baskets of buttery pretzel rods available for snacking on all tables.


text:
Home » Virtual Spotlight: Catherine Fields
Virtual Spotlight: Catherine Fields
10 Things You Didn't Know About Hey Now! Media Designer: Catherine Fields
1. What is one of your favorite quotes?
"Stay Hungry. Stay Foolish." —Steve Jobs
2. What chore do you absolutely hate doing?
I hate grocery shopping, I just try to get what I need and go. But I do really like to clean!
3. What has been your proudest moment at Hey Now!?
It's not really a moment, but just generally I was proud when I got to start designing logos and complete branding packages from scratch!
4. What are three things most people don't know about you?
1. I have a big extended family! My mom has 5 sisters that all live in the Central Florida area.
2. I started out in college as a computer science major, but changed to graphic design immediately after that semester.
3. I'm really artistic and creative, but I'm also logical and I love math and puzzles!
5. Best thing about living/working in Cleveland?
I don't live or work in Cleveland because I work remotely from Orlando, FL (Disney World yay!), but I would definitely love to visit sometime soon! I'm dying to go to Weapons of Mass Creation Fest in Cleveland!
6. What is one thing you can't live without?
The one thing I would be lost without is my Macbook computer. It's how I work!
7. If you were a type of food, what type of food would you be and why?
I would be ice cream, because I just like to "chill out" 🙂 Plus I have an ice cream addiction.
8. Do you have a nickname?
People have usually just called me Catherine, but some people like to call me Cat. I was known as Twiggy in high school, because I'm super tall and skinny.
9. What's the hardest thing you've ever done?
This past summer I juggled my final semester of college (putting together a 200 page portfolio book with 9 full branding campaigns), 35 hours a week at an internship, and working on projects for Hey Now! Media. I didn't sleep much, but I did it!
10. If Hollywood made a movie about your life, who would you like to see cast as you?
Zooey Deschanel because she's so goofy! Plus, Elf is one of my favorite movies.

redpajama_set_name: RedPajamaCommonCrawl


The epiphyte Lobaria pulmonaria (lungwort) is a foliose lichen of the northeastern forest. It is an association of three kingdoms of life – fungi, algae, and cyanobacteria – working in a symbiotic relationship. Lungwort prefers moist, shady interior forest habitats and is often found on maple (Acer spp.), oak (Quercus spp.), and beech (Fagus spp.). It is slow to mature and sensitive to disturbance, and its presence is a good indicator of long-term forest stability and maturity. It may take up to 25 years to attain the reproductive state for both vegetative and sexual pathways.
Andersson, L. and Appelqvist, T. Lobaria pulmonaria and Gyalecta ulmi as indicators of deciduous woodland with high nature qualities. Sven. Bot. Tidskr. 81, 185-194. 1987.
Arseneau, M.-J., Ouellet, J.-P., and Sirois, L. (1998). Fruticose arboreal lichen biomass accumulation in an old-growth balsam fir forest. Canadian Journal of Botany 76, 1669-1676.
Bolgiano, C. (1989). A case for eastern old-growth. American Forests 26-48.
Bredesen, B., Haugan, R., Aanderaa, R., Lindblad, I., Okland, B., and Rosok, O. Wood-inhabiting fungi as indicators on ecological continuity within spruce forests of southeastern Norway. Blyttia 55, 131-140. 1997.
Burton, P. J., Kneeshaw, D. D., and Coates, K. D. (1999). Managing forest harvesting to maintain old growth in boreal and sub-boreal forests. Forestry Chronicle 75, 623-631.
Busing, R. T. (1998). Composition, Structure and Diversity of Cove Forest Stands in the Great Smoky Mountains: a Patch Dynamics Perspective. Journal of Vegetation Science 9, 881-890.
Busing, R. T. and Garman, S. L. (2002). Promoting old-growth characteristics and long-term wood production in Douglas-fir forests. Forest Ecology and Management 160, 161-175.
Busing, R. T. and P. S. White (1993). Effects of area on old-growth forest attributes: implications for the equilibrium landscape concept. Landscape Ecology 8, 119-126.
Chandler, D. S. and Peck, S. B. (1992). Diversity and seasonality of leiodid beetles (Coleoptera: Leiodidae) in an old-growth and a 40-year-old forest in New Hampshire. Environmental Entomology 21, 1283-1293.
Chandler, D. S. Species richness and abundance of Pselaphidae (Coleoptera) in old-growth and 40-year-old forests in New Hampshire. Can. J. Zool. 65, 608-615. 1987.
Chen, J., Franklin, J. F., and Spies, T. A. Contrasting microclimates among clearcut, edge, and interior of old-growth Douglas-fir forest. Agricultural and Forest Meteorology 63[3-4], 219-237. 1993.
Conrad, J. M. (1997). On the option value of old-growth forest. Ecological Economics 22, 97-102.
Cousins, S. A. O. and Eriksson, O. (2001). Plant species occurrences in a rural hemiboreal landscape: effects of remnant habitats, site history, topography and soil. Ecography 24, 461-469.
Dettki, H. and Esseen, P. A. (1998). Epiphytic Macrolichens in Managed and Natural Forest Landscapes: a Comparison at Two Spatial Scales. Ecography 21, 613-624.
Dettki, H., Klintberg, P., and Esseen, P.-A. (2000). Are epiphytic lichens in young forests limited by local dispersal? Ecoscience 7, 317-325.
Edenius, L. and K. Sjoberg (1997). Distribution of birds in natural landscape mosaics of old-growth forests in northern Sweden: Relations to habitat area and landscape context. Ecography 20, 425-431.
Esseen, P.-A., Renhorn, K.-E., and Pettersson, R. B. Epiphytic lichen biomass in managed and old-growth boreal forests: effect of branch quality. Ecological Applications 6, 228-238. 1996.
Etayo, J. and Gomez-Bolea, A. Ecological stability through lichens as bioindicators in oak-woods of the Atlantic Pyrenees. Folia Botanica Miscellanea 8, 61-75. 1992.
Faurholdt, N. Application of indicator species in the assessment of the potentiel of natural forest in danish southeastern hardwood forests. Flora Og Fauna 106[3-4], 53-61. 2000.
Foster, D. R., D.A. Orwig, and J. S. McLachlan (1996). Ecological and conservation insights from reconstructive studies of temperate old-growth forests. Trends in Ecology and Evolution 11, 419-424.
Franklin, J. F., K. Cromack, Jr., W. Denison, A. McKee, C. Maser, J. Sedell, J. Swanson, and G. Juday. Ecological Characteristics of Old-Growth Douglas-Fir Forests. Portland, OR, USDA Forest Service.
Franklin, J. F., Lindenmayer, D., MacMahon, J. A., McKee, A., Magnuson, J., Perry, D. A., Waide, R., and Foster, D. Threads of Continuity. Conservation Biology in Practice 1:9-16.
Freedman, B., Zelanzy, V., Beaudette, D., Fleming, T., Flemming, S., Forbes, G., Gerrow, J. S., Johnson, G., and Woodley, S. Biodiversity implications of changes in the quantity of dead organic matter in managed forests. Environmental Reviews 4, 238-265. 1996.
Gandhi, K. J. K., Spence, J. R., Langor, D. W., and Morgantini, L. E. (2001). Fire residuals as habitat reserves for epigaeic beetles (Coleoptera: Carabidae and Staphylinidae). Biological Conservation 102, 131-141.
Gauslaa, Y. (1995). The Lobarion, an epiphytic community of ancient forests threatened by acid rain. Lichenologist 27, 59-76.
Gauslaa, Y. and Ohlson, M. Continuity and epiphytic lichens in Norwegian forests. A historical perspective. Blyttia 55, 15-27. 1997.
Gauslaa, Y. and Solhaug, K. A. (1996). Differences in the susceptibility to light stress between epiphytic lichens of ancient and young boreal forest stands. Functional Ecology 10, 344-354.
Gauslaa, Y. Lobaria pulmonaria, an indicator of species-rich forests of long ecological continuity. Blyttia 52, 119-128. 1994.
Gauslaa, Y., Anonby, J., Gaarder, G., and Tonsberg, T. Usnea longissima, a rare ancient forest lichen in western Norway. Blyttia 50, 105-114. 1992.
Götmark, F., and M. Thorell. Size of nature reserves: densities of large trees and dead wood indicate high value of small conservation forests in southern Sweden. Biodiversity and Conservation 12:1271-1285.
Goward, T. Notes on oldgrowth-dependent epiphytic macrolichens in inland British Columbia, Canada. Acta Botanica Fennica 150, 31-38. 1994.
Graae, B. J. and Sunde, P. (2000). The impact of forest continuity and management on forest floor vegetation evaluated by species traits. Ecography 23, 720-731.
Grove, S. J. (2002). Saproxylic insect ecology and the sustainable management of forests. Annual Review of Ecology and Systematics 33, 1-23.
Grove, S. J. (2002). Tree basal area and dead wood as surrogate indicators of saproxylic insect faunal integrity: a case study from the Australian lowland tropics. Ecological Indicators 1, 171-188.
Groven, R., Rolstad, J., Storaunet, K. O., and Rolstad, E. (2002). Using forest stand reconstructions to assess the role of structural continuity for late-successional species. Forest Ecology and Management 164, 39-55.
Gu, Wei-Dong M. Kuusinen T. Konttinen and I. Hanski (2001). Spatial pattern in the occurrence of the lichen Lobaria pulmonaria in managed and virgin boreal forests. Ecography 24, 139-150.
Gustafsson, L., Fiskesjo, A., Ingelog, T., Pettersson, B., and Thor, G. (1992). Factors of importance to some lichen species of deciduous broad-leaved woods in southern Sweden. Lichenologist 24, 255-266.
Hagan, J. M. and Grove, S. L. 1995 Report: Selection cutting, old-growth, birds and forest structure in Maine. Manomet Observatory for Conservation Sciences.
Hakan, B. and Jonsson, B. G. Predictability of plant and fungal species richness of old-growth boreal forest islands. Journal of Vegetation Science 12, 857-866. 2001.
Hale, C. M., Pastor, J., and Rusterholtz, K. A. Comparison of structural and compositional chanracteristics in old-growth and mature, managed hardwood forests of Minnesota, U.S.A. Canadian Journal of Forest Research 29, 1479-1489. 1999.
Hale, Jr. M. E. Vertical distribution of cryptogams in virgin forest in Wisconsin. Ecology 33, 398-406. 1952.
Hallingbäck, T. (1989). Occurrence and ecology of the lichen Lobaria scrobiculata in southern Sweden. Lichenologist 21, 331-342.
Hallingback, T. and Weibull, H. (1996). Bryophytes indicating deciduous forest stands important for nature conservation in southern Sweden. Svensk Botanisk Tidskrift 90, 129-140.
Hallingback, T. The decline of three species of Lobaria in Sweden. Svensk. Bot. Tidskr. 80, 373-381. 1986.
Hanski, I. (2000). Extinction debt and species credit in boreal forests: modelling the consequences of different approaches to biodiversity conservation. Annales Zoologici Fennici 37, 271-280.
Hardt, R. A. and Swank, W. T. (1997). A comparison of structural and compositional characteristics of southern Appalachian young second-growth, maturing second-growth, and old-growth stands. Natural Areas Journal 17, 42-52.
Hartwell, H. W. Jr. (1990). Relictual amphibians and old-growth forests. Conservation Biology 4, 309-319.
Hazell, P. and Gustafsson, L. (1999). Retention of trees at final harvest-Evaluation of a conservation technique using epiphytic bryophyte and lichen transplants. Biological Conservation 90, 133-142.
Hedenas, H. and Ericson, L. (2000). Epiphytic macrolichens as conservation indicators: Successional sequence in Populus tremula stands. Biological Conservation 93, 43-53.
Holthausen, R. S. and Marcot, B. G. Applying the results of old-growth research to management: Information needs, development of technical tools, and future research. Ruggeiro, L. F., Aubry, K. B., Carey, A. B., and Huff, M. H. Technical Coordinators. Wildlife and Vegetation of Unmanaged Douglas-fir Forests. Portland, OR, USDA, Forest Service, Pacific Northwest Research Station.
Howe, K. D. Distribution and abundance of terrestrial and arboreal lichens in the old-growth coniferous forests of the western Cascades of Oregon, with special reference to nitrogen-fixing species. Eugene, OR, Department of Geography, University of Oregon.
Humphrey, J.W., S. Davey, A.J. Peace, R. Ferris, and H. Harding. Lichens and bryophyte communities of planted and semi-natural forests in Britain: the influence of site type, stand structure and deadwood. Biological Conservation 107:165-180.
Hunter, M. L. and White, A. S. Ecological thresholds and the definition of old-growth forest stands. Natural Areas Journal 17, 292-296. 1997.
Hunter, M. L. Jr. (1989). What constitutes an old-growth stand? Journal of Forestry 33-35.
Jonsell, M. (1999). Insects on wood-decaying polypores: conservation aspects. Acta Universitatis Agriculturae Sueciae Silvestria 93, 179 pp.
Jonsell, M. and Nordlander, G. (2002). Insects in polypore fungi as indicator species: a comparison between forest sites differing in amounts and continuity of dead wood. Forest Ecology and Management 157, 101-118.
Jonsson, L., Dahlberg, A., Nilsson, M. C., Zackrisson, O., and Karen, O. Ectomycorrhizal fungal communities in late-successional Swedish boreal forests, and their composition following wildfire. Molecular Ecology 8, 205-215. 1999.
Kaila Lauri., Martikainen Petri, Punttila Pekka, and Yakovlev Evgeniy. Saproxylic beetles (Coleoptera) on dead birch trunks decayed by different polypore species. Annales Zoologici Fennici 31, 97-107. 1994.
Kivisto, L. and Kuusinen, M. Edge effects on the epiphytic lichen flora of Picea abies in middle boreal Finland. Lichenologist 32, 387-398. 2000.
Kuusinen, M (1996). Epiphyte flora and diversity on basal trunks of six old-growth forest tree species in southern and middle boreal Finland. Lichenologist 28(5), 443-463.
Kuusinen, M. (1994). Epiphytic lichen diversity on Salix caprea in old-growth southern and middle boreal forests of Finland. Annales Botanici Fennici 31, 77-92.
Kuusinen, M. and Penttinen, A. Spatial pattern of the threatened epiphytic bryophyte Neckera pennata at two scales in a fragmented boreal forest. Ecography 22, 729-735. 1999.
Kuusinen, M. and Siitonen, J. (1998). Epiphytic lichen diversity in old-growth and managed Picea abies stands in southern Finland. Journal of Vegetation Science 9, 283-292.
Lattin, J. D. (1993). Arthropod diversity and conservation in old-growth northwest forests. American Zoologist. 33, 578-587.
Lesica, P., McCune, B., Cooper, S. V., and Hong, W. S. (1991). Differences in lichen and bryophyte communities between old-growth and managed second-growth forests in the Swan Valley, Montana. Canadian Journal of Botany 69, 1745-1755.
Lindgren, M. (2001). Polypore (Basidiomycetes) species richness and community structure in natural boreal forests of NW Russian Karelia and adjacent areas in Finland. Acta Botanica Fennica 170, 1-41.
Löfman, S. and Kouki, J. (2001). Fifty years of landscape transformation in managed forests of southern Finland. Scandinavian Journal of Forest Research 16, 44-53.
Lorimer, C. G. and L. E. Frelich (1994). Natural disturbance regimes in old-growth northern hardwoods: Implications for restoration efforts. Journal of Forestry 33-38.
McComb, W. C. and R. N. Muller (1983). Snag densities in old-growth and second-growth Appalachian forests. Journal of Wildlife Management 47, 376-382.
McGee, G. G., Leopold, D. J., and Nyland, R. D. Structural characteristics of old-growth, maturing, and partially cut northern hardwood forests. Ecological Applications 9, 1316-1329. 1999.
Meier, A. J., S. P. Bratton, and D. C. Duffy (1995). Possible ecological mechanisms for loss of vernal-herb density in logged eastern deciduous forests. Ecological Applications 5, 935-946.
Millikin, R. L. Utilization of residual patches of old-growth timber by forest birds. Marshall, V. Proceedings of the Forest Ecosystem Dynamics Workshop. Forest Canada and British Columbia Ministry of Forestry. FRDA Rep. No. 210.
Mladenoff, D. J., White, M. A., Crow, T. R., and Pastor, J. (1994). Applying principles of landscape design and management to integrate old-growth forest enhancement and commodity use. Conservation Biology 8, 752-762.
Neitlich, P. N. and McCune, B. Hotspots of epiphytic lichen diversity in two young managed forests. Conservation Biology 11, 172-182. 1997.
Niemela, J. (1997). Invertebrates and boreal forest management. Conservation Biology 11, 601-610.
Nilsson, S. G. and Baranowski, R. (1997). Habitat predictability and the occurrence of wood beetles in old-growth beech forests. Ecography 20, 491-498.
Nilsson, S. G. and Baranowski, R. Indicators of megatree continuity- Swedish distribution of click beetles (Coleoptera, Elateridae) dependent on hollow trees. Ent. Tidskr. 115, 81-97. 1994.
Nilsson, S. G. and Baranowski, R. Species composition of wood beetles in an unmanaged mixed forest in relation to forest history. Ent. Tidskr. 114, 133-146. 1993.
Nilsson, S. G., Arup, U., Baranowski, B., and Ekman, S. Tree-dependent lichens and beetles as indicators in conservation forests. Conservation Biology 9, 1208-1215. 1995.
Nilsson, S. G., Niklasson, M., Hedin, J., Aronsson, G., Gutowski, J. M., Linder, P., Ljungberg, H., Mikusiski, G., and Ranius, T. (2002). Densities of large living and dead trees in old-growth temperate and boreal forests. Forest Ecology and Management 161, 189-204.
Norstedt, G., Bader, P., and Ericson, L. (2001). Polypores as indicators of conservation value in Corsican pine forests. Biological Conservation 99, 347-354.
Nowacki, G. J. and P. A. Trianosky. (1993). Literature on old-growth forests of eastern North America. Natural Areas Journal 13, 87-107.
Ohlson, M. and Tryterud, E. Long-term spruce forest continuity: a challenge for a sustainable Scandinavian forestry. Forest Ecology and Management 124, 27-34. 1999.
Ohlson, M., L. Soderstrom, G. Hornberg, O. Zackrisson, and Hermansson (1997). Habitat qualities versus long-term continuity as determinants of biodiversity in boreal old-growth swamp forests. Biological Conservation 81, 221-231.
Ojala, E., Mönkkönen, M., and Inkeröinen, J. (2000). Epiphytic bryophytes on European aspen Populus tremula in old-growth forests in northeastern Finland and in adjacent sites in Russia. Canadian Journal of Botany 78, 529-536 .
Orjan, F. and Krister, L. The significance of long forest continuity to red-listed lichens: a study of beech forest in the province of Halland, SW Sweden. Svensk Botanisk Tidskrift 90, 241-262. 1996.
Peck Jerilynn E. and McCune Bruce. Remnant trees and canopy lichen communities in western oregon: a retrospective approach. Ecological Applications 7, 1181-1187. 1997.
Pike, L. H., W. C. Denison, D. Tracy, M. Sherwood, and F. Rhoades (1975). Floristic survey of epiphytic lichens and bryophytes growing on living, old-growth conifers in western Oregon. Bryologist 78, 391-404.
Qian Hong., Klinka Karel, and Song Xianghou. Cryptogams on decaying wood in old-growth forests of southern coastal British Columbia. Journal of Vegetation Science 10, 883-894. 1999.
Rambo, T. R. and Muir, P. S. (1998). Bryophyte Species Associations With Coarse Woody Debris and Stand Ages in Oregon. Bryologist 101, 366-376.
Rolstad, J., Gjerde, I., Gundersen, V. S., and Saetersdal, M. (2002). Use of indicator species to assess forest continuity: a critique. Conservation Biology 16, 253-257.
Rosso, A. L., McCune, B., and Rambo, T. R. (2000). Ecology and conservation of a rare, old-growth-associated canopy lichen in a silvicultural landscape. Bryologist 103, 117-127.
Scheidegger, C., Stofer, S., Dietrich, M., Groner, U., Keller, C., and Roth, I. Estimating regional extinction probabilities and reduction in populations of rare epiphytic lichen-forming fungi. Forest Snow and Landscape Research 75, 415-433. 2000.
Selva, S. B. (1994). Lichen diversity and stand continuity in the northern hardwoods and spruce-fir forests of northern New England and western New Brunswick. Bryologist 97, 424-429.
Selva, S. B. B. Hicks T. Marsh J. Gobeille and C. Strong (1989). Lichens as Indicators of Old-growth Forest (Final Report). 71-76.
Seymour, R. S., White, A. S., and deMaynadier, P. G. (2002). Natural disturbance regimes in northeastern North America: evaluating silvicultural systems using natural scales and frequencies. Forest Ecology and Management 155, 357-367.
Shirazi, A. M., Muir, P. S., and McCUne, B. Environmental factors influencing the distribution of the lichens Lobaria oregana and L. pulmonaria. The Bryologist 99, 12-18. 1996.
Siitonen, J. and Saaristo, L. Habitat requirements and conservation of Pytho kolwensis, a beetle species of old-growth boreal forest. Biological Conservation 94, 211-220. 2000.
Siitonen, J., Martikainen, P., Punttila, P., and Rauh, J. (2000). Coarse woody debris and stand characteristics in mature managed and old-growth boreal mesic forests in southern Finland. Forest Ecology and Management 128, 211-225.
Siitonen, J., Penttilä, R., and Kotiranta, H. (2001). Coarse woody debris, polyporous fungi and saproxylic insects in an old-growth spruce forest in Vodlozero National Park, Russian Karelia. Ecological Bulletin 49, 231-242.
Sillett, S. C. and Goslin, M. N. Distribution of epiphytic macrolichens in relation to remnant trees in a multiple-age Douglas-fir forest. Canadian Journal of Forest Research 29, 1204-1215. 1999.
Sillett, S. C., McCune, B., Peck, J. E., Rambo, T. R., and Ruchty, A. (2000). Dispersal limitations of epiphytic lichens result in species dependent on old-growth forests. Ecological Applications 10, 789-799.
Similä, M., Jari Kouki, J., and Martikainen, P. (2003). Saproxylic beetles in managed and seminatural Scots pine forests: quality of dead wood matters. Forest Ecology and Management 174, 365-381.
Spence, J. R., D. W. Langor, J. Niemela, H. A. Carcamo, and C. R. Currie (1996). Northern forestry and carabids: The case for concern about old-growth species. Annales Zoologici Fennici 33, 173-184.
Spies, T. A. and J.F. Franklin. The diversity and maintenance of old-growth forests. 296-314. New York., Oxford Univ. press. Sxaro, R. C. and D. W. Johnston. 1996.
Sverdrup-Thygeson A. and Lindenmayer D (1998). The concept of indicator species in forest conservation: how well does it work? Fauna 51, 150-159.
Sverdrup-Thygeson A. Can 'continuity indicator species' predict species richness or red-listed species of saproxylic beetles? Biodiversity and Conservation 10, 815-832. 2001.
Sverdrup-Thygeson, A. and Lindenmayer, D. B. (2003). Ecological continuity and assumed indicator fungi in boreal forest: the importance of the landscape matrix. Forest Ecology and Management 174:353-363.
Thor, G. Red-listed lichens in Sweden: habitats, threats, protection, and indicator value in boreal coniferous forests. Biodiversity and Conservation 7, 59-72. 1998.
Tibell, L. Crustose lichens as indicators of forest continuity in boreal coniferous forests. Nordic Journal of Botany 12, 427-450. 1992.
Uotila, A., Kouki, J., Kontkanen, H., and Pulkkinen, P. Assessing the naturalness of boreal forests in eastern Fennoscandia. Forest Ecology and Management 161, 257-277. 2002.
Wahlberg, N., Moilanen, A., and Hanski, I. (1996). Predicting the occurrence of endangered species in fragmented landscapes. Science 273, 1536-1538.
White, M. A. and D. J. Mladenoff (1994). Old-growth forest landscape transitions from pre-european settlement to present. Landscape Ecology 9, 191-205.
Whitney, G. G. (1987). Some reflections on the value of old-growth forests, scientific and otherwise. Natural Areas Journal 7, 92-99.
Willett Terrence R. Spiders and other arthropods as indicators in old-growth versus logged redwood stands. Restoration Ecology 9, 410-420. 2001.
Zoller, S., Lutzoni, F., and Scheidegger, C. Genetic variation within and among populations of the threatened lichen Lobaria pulmonaria in Switzerland and implications for its conservation. Molecular Ecology 8, 2049-2059. 1999.
Note: This is an incomplete work in progress. Updated June 13, 2017.


hd00:16RAMNAGAR, INDIA - APRIL 13: Drive through a rural area in northern India on April 13, 2014 in Ramnagar, India. It is a simpler and calmer life than in major cities. Schools are abundant.
hd00:19Bicyclist goes on a bicycle on a bridge across the river.
4k00:09Parents walking their young daughter up the street beside a river.


Simply found has seen a need in the local area for company's who've invested in websites that simply don't rank when searching for a product or service. This can be for a few reasons and generally isn't the designers fault as most websites need some sort of SEO attached to it.
Whether it's simply some on-sight changes that are needed or it may need on-going SEO work for a period of 6 – 12 months, the team at Simple Found have you covered with full and up to date reporting our team will keep you in the loop on how your website is performing and what SEO work is being done.
Simply found only use the best White Hat practices when it comes to search engine optimisation and it's not a quick fix program however we'll show you how we can best get the right results for your business..
Australia is growing and search patterns on Search Engines such as Google and Bing change all the time. In fact Google change there algorithms around 520 times per year so it's important that you have an element of SEO on your website at any given time depending on the traffic and how competitive the keyword phrase plus the location (in this case it's Australia) Contact the team at Simply Found today to discuss your SEO roadmap.
Your website is your greatest asset, it always looks good, it's never late and works 24/7. So wouldn't you have it in front of active searches who are searching for your products and services today, ready buyers.
Whether it's Geelong, Melbourne or any other location across Australia you want to rank, for the team at Simply Found will work out a cost effective road map to help get your website ranked. SEO is not an overnight service and when done correctly Search Engine optimisation can take anywhere between 3 – 12 months depending on competition and industry relate searches.
If you need your website on front of more customers in and around Australia, Simply Found can put you there. Search Engine Optimisation (SEO) is a process in which we optimise your website so that it is more relevant to the keyword phrase that is typed in.
SEO gives you the opportunity to appear higher in the search results therefore giving you a greater opportunity for someone to visit your website resulting in business.


Nobody knows Golf Vacations like The Golf Desk! Come experience the simple, easy, no non-sense approach to your next golf vacation!
We've been providing the best, most affordable golf vacations since 1991. Let our knowledge, experience and expertise save you time and money. If you already have a place to stay and simply need a tee time; or if you need a golf and lodging package. We're here to help you make the best of YOUR golf vacation. We've assembled a collection of information, as well as hired the most knowledgeable and friendly Golf Directors in the business to help you plan your best golf vacation yet!
Use our Golf Course Guide, our Area golf course maps, or our interactive Golf Blog as planning tools or call one of our Golf Experts.
Founders Group International FGI has put together the Rewards package!
Combinations are endless and we here at the Golf Desk will be happy to caddie you thru all of the possibilities.
4 rounds includes $100 gift card per golfer Gift card may be redeemed for golf, (selected) merchandise, and food & beverage. 22 courses from which to choose located, south, central, and north coast.
Stay and Play at Myrtlewood Golf Resort and get a $100 Giftcard for each person!
4 rounds includes $100 gift card per golfer Card may be redeemed for golf, (selected) merchandise, and Food & beverage. 22 courses from which to choose located south, central, and north coast.


"This is a super-easy way to cook these vegetables if you've never tried them before and by far my favorite. Jerusalem artichokes, or sunchokes, are starchy tubers like potatoes and turnips. When roasted, the skin becomes flaky and the flesh becomes tender, but the taste of a sunchoke is slightly nutty and sweet. Cooked sunchokes are best when eaten within 2 days. When raw, they store well in your fridge's vegetable bin, wrapped loosely in a paper towel. Enjoy!"
Scrub Jerusalem artichoke tubers and cut out eyes. Cut tubers into 1-inch pieces.
Mix olive oil, thyme, garlic, and sea salt together in a large bowl; add Jerusalem artichoke pieces and toss to coat. Arrange coated pieces in one evenly-spaced layer on a baking sheet.
Roast in the preheated oven until Jerusalem artichokes are tender, 35 to 45 minutes.


Mirchev Ideas is proud to announce one more partnership within the Bulgarian IT industry and appreciates the wide-spread trust in Summer Cart shopping cart software. The software company Selmatic collaborated efforts with Mirchev Ideas and created an interface for integration between their ERP product InfoPlus and the e-commerce solution Summer Cart.
The integration allows an offline trade company to open the online store spending minimim efforts and money, and virtually immediately as the online shop gets merged and synchronized to the ERP solution in use. The product catalog of the e-shop can be managed through InfoPlus because the e-commerce site extracts all the information about products, prices and quantities in stock directly from the ERP application. Online sales, online orders and online payments also get transferred to the ERP software where orders get processed as usual. Currently integration of orders is subject to additional software development in Summer Cart. Thanks to the unique technology of InfoPlus the data exchanged by the two systems can be individually customized for each and every client.
Thе integration has already found a real-world application for two corporate clients of Selmatic. The project is in deployment for ONE Telecommunications AD - the biggest mobile telecommunications company in Macedonia, where the final phase of testing is being accomplished at the moment before the online store comes to life in the Internet. Another deployment of the integration is done for Multirama - the largest chain of stores in Bulgaria specialising in computers and accessories, thus orders from the online store will be automatically submitted into the ERP software InfoPlus.
Selmatic is a Bulgarian software company with more than 10 years of tradition in development, implementation and maintenance of specialized business management software. InfoPlus is their leading product for enterprise resource management, and is suitable for companies involved in wholesale or retail commerce and especially chains of stores or offices, located physically in different places. The client reference list includes large organizations as Germanos Bulgaria, Globul, Germanos Macedonia, cell phone chain store retailer 2be, 2be Mobile Skopie, Public Bulgaria and others.
For more information you can call Mirchev Ideas company at +359-2-975-24-24 or visit Selmatic website.


text:
MYCARE LIMITED - AUCKLAND - NEW ZEALAND
MYCARE LIMITED is a NZ Limited Company from Auckland in NEW ZEALAND. It was incorporated on 4 Sep 2013 and has the status: Registered.
The company's business classification is: J570010 Internet publishing and broadcasting. There are 12192465 shares in issue. MYCARE LIMITED has the company number:4632420 and the NZ business number: 9429030072916.
Website: www.mycare.co.nz
email: hello@mycare.co.nz
Address for Service: 72 Taharoto Road, Takapuna, Auckland, 0622 NEW ZEALAND
Registered Office: 72 Taharoto Road, Takapuna, Auckland, 0622 NEW ZEALAND
Mark Atkinson JEFFRIES 75 The Esplanade, Manly, Whangaparaoa, 0930 NEW ZEALAND 13 Sep 2019
Theresa GATTUNG 3 Livingstone Street, Westmere, Auckland, 1022 NEW ZEALAND 12 Dec 2016 - 10 Apr 2018 (resigned)
Graham CLARKE 6/10 Shelly Beach Rd, St Marys Bay, Auckland, 1011 NEW ZEALAND 30 Apr 2015 - 15 Aug 2019 (resigned)
Lester LEVY 6 Cullwick Road, Mission Bay, Auckland, 1071 NEW ZEALAND 31 May 2018 - 16 Aug 2019 (resigned)
Kevin John MCFALL 264 Point View Drive, Dannemora, Auckland, 2016 NEW ZEALAND 30 Apr 2015 - 18 Nov 2019 (resigned)
Bruce Raymond SHEPPARD 5 Musick Point Road, Bucklands Beach, Auckland, 2012 NEW ZEALAND 29 Jan 2019 - 18 Nov 2019 (resigned)
Mark John VERBIEST 17 The Terraces, Wanaka, Wanaka, 9305 NEW ZEALAND 30 Apr 2015 - 18 Nov 2019 (resigned)
Laurie HILSGEN 3/3 Vinegar Lane, Grey Lynn, Auckland, 1021 NEW ZEALAND 30 Apr 2015 - 31 May 2019 (resigned)
Mark Atkinson JEFFRIES 75 The Esplanade, Manly, Whangaparaoa, 0930 NEW ZEALAND 4 Sep 2013 - 31 May 2019 (resigned)
Christopher MATHEWS 16 Westmere Park Avenue, Westmere, Auckland, 1022 NEW ZEALAND 30 Apr 2015 - 4 Nov 2016 (resigned)
1 1,077,524 (8.8%) Christopher MATHEWS 16 Westmere Park Avenue, Westmere, Auckland, 1022 NEW ZEALAND
2 349,299 (2.9%) Sarah VERBIEST 17 The Terraces, Wanaka, Wanaka, 9305 NEW ZEALAND
3 480,866 (3.9%) Robert STEWART 2 Corrondella Grove, Belmont, Lower Hutt, 5010 NEW ZEALAND
4 176,277 (1.4%) Meredith TOWNSLEY 1 Niton St,, London, SW6 6NH UNITED KINGDOM
5 5,007,390 (41.1%) Mark Atkinson JEFFRIES 75 The Esplanade, Manly, Whangaparaoa, 0930 NEW ZEALAND
6 272,137 (2.2%) David FARRELLY 40 Dundas Street, Seatoun, Wellington, 6022 NEW ZEALAND
7 272,137 (2.2%) Christopher AIKEN 20 Meteor Road, Hobsonville, Auckland, 0618 NEW ZEALAND
8 94,202 (0.8%) David PRALONG 22 Garden Road, Remuera, Auckland, 1050 NEW ZEALAND
9 100,000 (0.8%) Linda SIMMONS 3 Second Avenue, Stanley Point, Auckland, 0624 NEW ZEALAND
10 142,500 (1.2%) Ross MACPHERSON C/-37 Laurence St, Whangaparaoa, Auckland, 0930 NEW ZEALAND
11 21,250 (0.2%) Tina SYMMANS 351 Clifton Road, Te Awanga, Te Awanga, 4102 NEW ZEALAND
12 662,500 (5.4%) WINNOW SOFTWARE LIMITED Gilligan Sheppard Limited, Level 4 Smith & Caughey Building, 253 Queen Street, Auckland, 1010 NEW ZEALAND
13 142,500 (1.2%) GCI TRUSTEE SERVICES LIMITED 6/10 Shelly Beach Rd, St Marys Bay, Auckland, 1011 NEW ZEALAND
14 81,162 (0.7%) SHADES TRUST LIMITED SINGLETON MERCER LTD, CHARTERED ACCOUNTANTS, Suite 2, 10 Victoria Street, Devonport, Auckland, 0624 NEW ZEALAND
15 81,162 (0.7%) Rod SNODGRASS 51b Vermont Street, Ponsonby, Auckland, 1011 NEW ZEALAND
16 1,009,378 (8.3%) SPARK NEW ZEALAND TRADING LIMITED Level 2, Spark City, 167 Victoria Street West, Auckland, 1010 NEW ZEALAND
17 121,423 (1%) Theresa GATTUNG 3 Livingstone Street, Westmere, Auckland, 1022 NEW ZEALAND
18 64,000 (0.5%) SOUTHERN HILLS IMPERIAL TIMBER ( 1932) PTY LIMITED Gilligan Sheppard Limited, Level 4, Smith & Caughey Building, 253 Queen Street, Auckland, 1010 NEW ZEALAND
19 63,751 (0.5%) MEAD TRUSTS HOLDINGS LIMITED B S Crompton, 440 Papakura-clevedon Road, Rd 2, Clevedon, 2582 NEW ZEALAND
20 63,751 (0.5%) Barrington John HELLYER 1 Cosica Way, Karaka Harbourside, Auckland, 2113 NEW ZEALAND
23 1,816,667 (14.9%) Mark Atkinson JEFFRIES 75 The Esplanade, Manly, Whangaparaoa, 0930 NEW ZEALAND
24 57,997 (0.5%) David FARRELLY 40 Dundas Street, Seatoun, Wellington, 6022 NEW ZEALAND
DNA DASHBOARDS LIMITED Removed 16 May 2002 Simpson Grierson, Barristers And, Solicitors, Level 24 Hsbc Tower, 195, Lambton Quay Wellington NEW ZEALAND
INTELLECTUAL CAPITAL RATINGS (NZ) LIMITED Removed 7 Feb 2005 17 Ravenstone Place, Chatswood, Auckland, 0626 NEW ZEALAND
JEFTON INVESTMENTS LIMITED Removed 24 May 2005 Level 5, 25 Broadway, Newmarket, Auckland, 1023 NEW ZEALAND
NEPRI LIMITED Removed 15 Mar 2007 Simpson Grierson, 88 Shortland Street, Auckland NEW ZEALAND
HSAGLOBAL LIMITED Removed 21 Nov 2008 KordaMentha, Level 21, 88 Shortland Street, Auckland Central, Auckland, 1010 NEW ZEALAND
THE JUSTICE FOUNDATION LIMITED Registered 2 Jul 2013 75 The Esplanade, Manly, Whangaparaoa, 0930 NEW ZEALAND
ATKINSON HOLDINGS LIMITED Registered 4 Nov 1993 75 The Esplanade, Manly, Whangaparaoa, 0930 NEW ZEALAND
KOMANAWA LIMITED Registered 3 Jan 2018 Flat 1, 7 Cliff Road, St Heliers, Auckland, 1071 NEW ZEALAND
KOMANAWA ITI LIMITED Registered 5 Jan 2018 Flat 1, 7 Cliff Road, St Heliers, Auckland, 1071 NEW ZEALAND
R HANNAH & CO LIMITED Removed 12 Oct 1923 Level 3, South Annex, 1-7 The Strand, Takapuna, Auckland, 0622 NEW ZEALAND
A.J. FEAR LIMITED Registered 21 Nov 1949 Flat 3, 31 Sanders Avenue, Takapuna, Auckland, 0622 NEW ZEALAND
CHAS DAVY & SONS LIMITED Registered 21 Jul 1924 35b Williamson Avenue, Belmont, Auckland, 0622 NEW ZEALAND
SEAPACIFIC LIMITED Registered 18 Jul 1930 WBB Chartered Accountants, L, 111 Hurstmere Road, Takapuna, Auckland, 0622 NEW ZEALAND
PHILLIPS & SMITH PROPERTIES LIMITED Registered 11 Sep 1930 BDO Auckland, Level 10, Bdo Tower, 19 Como Street, Takapuna, Auckland, 0622 NEW ZEALAND
N COLE LIMITED Registered 5 Dec 1932 71d Barrys Point Road, Takapuna, Auckland, 0622 NEW ZEALAND
DANISH MINERAL RESEARCH LIMITED Removed 6 May 1938 12 Huron Street, Takapuna, Auckland, 0622 NEW ZEALAND
H E COOPER & CO LIMITED Removed 16 Dec 1938 52 Beresford Street, Bayswater, Auckland, 0622 NEW ZEALAND
INTERNATIONAL INDUSTRIES LIMITED Registered 16 Jun 1948 11 Ewen Street, Hauraki, Auckland, 0622 NEW ZEALAND
YORK CORPORATION LIMITED Registered 17 Apr 1950 McIsaacs Limited, 159 Hurstmere Road, Takapuna, Auckland, 0622 NEW ZEALAND
KYOCERA DOCUMENT SOLUTIONS NEW ZEALAND LIMITED Registered 1 Dec 1943 Ground Floor, 19 Byron Ave, Takapuna, Auckland, 0622 NEW ZEALAND


Primary food production is the biggest industry in the world.
Ensuring the stability and integrity of national and international food supply chains is crucial; however, the challenges faced by this sector are greater than ever, as the global population increases, and the effects of climate change are felt.
Technology is increasingly used to address these challenges, often involving collaboration between multiple disciplines.
Patents, and other forms of intellectual property such as trade marks, plant variety rights and design rights, are routinely used to protect developments in the Agri-Tech sector, including in relation to crop sciences, agrochemicals, animal feed and medicine, and agricultural equipment.
Specialist members of our Agri-tech team have extensive professional experience in the Agri-Tech field, as well as advanced academic degrees. We have particular expertise in pesticide and herbicide chemistry, stress tolerance, plant developmental biology and transgenic plant technology, as well as considerable experience in plant variety right matters.
Our highly capable SPC team can also assist with matters relating to supplementary protection certificates for plant protection products.
We also have significant expertise in engineering, electronics, telecommunications and software, including in respect of automated control systems, as applicable to agricultural vehicles and storage and processing facilities. As well as this, our attorneys are able to advise on large-scale food processing techniques, such as in the dairy industry.
Understanding both the technical and external challenges within the industry keeps us at the forefront of developments in the Agri-Tech sector, and agricultural law in general. To this end, in the UK we are active members of Agri-Tech East, are connected with the N8 AgriFood Group and are regular attendees of LAMMA (the country's largest farm machinery and equipment show).
With our technical and professional expertise, we help our clients leverage their intellectual property assets and develop strategic approaches to provide commercial benefits to their business.
To download our Agritech brochures please click here.
Understanding both the technical and external challenges within the industry keeps us at the forefront of developments in the Agri-Tech sector.


text:
Big potential for digitizing wage payments in Cambodia's garment factories
Home » Big potential for digitizing wage payments in Cambodia's garment factories
The world is moving to digital payments. They are faster, more secure, more transparent and more efficient than cash. Digital payments can support small and medium enterprises (SMEs) and empower women and youth. The COVID-19 pandemic has accelerated the shift toward paying digitally and demonstrated clear benefits beyond cost and efficiency: by minimizing human interactions during money exchanges, reducing travel and keeping commercial establishments less crowded, and managing health risks.
The case for digital payment of wages in the workplace is strong. For example, Bangladesh's ready-made garment sector increased its adoption of wage digitization over the last decade and the business benefits of digital payments were clearly demonstrated, including lowering the costs and security risks of disbursing cash on payday. Adopting digital wage payments also expanded access to formal financial services for workers, especially women, and increased the use of accounts for savings and sending remittances, especially when partnered with financial capability training and ongoing support.
In Cambodia, where only 18% of adults have a bank account and 85% of garment workers are women, most garment sector wages continue to be paid in cash. To better understand the opportunity for wage digitization in Cambodia, IFC partnered with BSR's HERproject, under the IFC/ILO Better Work partnership, and in collaboration with Microfinance Opportunities. Starting in November 2020, we studied the opportunities and challenges to digitize Cambodia's garment factory wages through interviews and surveys with over 400 workers and managers from more than 100 factories. Half of the factories we selected to interview pay workers digitally and the other half pay workers in cash.
The findings were clear. Digital wages can bring efficiencies in the garment supply chain that benefit both employers and workers: (i) Digital payments can lower costs for factory owners; (ii) Workers, especially women, benefit from an increased use of digital financial services; and (iii) Cambodia has a solid technological infrastructure base for financial service providers to offer digital wages.
More specifically, the study found that:
i. Digital payments can lower costs for factory owners
Cash wage payments are time-consuming and more expensive: payroll staff and workers need to leave the production floor to collect their pay (which in Cambodia is twice a month). Even when factoring in the costs of digitization — like setup expenses and transaction fees — we estimate that digital wage payments can save large factories at least $1,700 per month (see table).
Digital factory representatives reported an overall satisfaction with the ease of administering digital payrolls. Despite some frustration with technical issues that may occur once a year at most, most factory managers believed that the shift from cash to digital wage payments was convenient for both the factory and the workers.
ii. Workers can benefit from an increased use of digital financial services
Workers who started using digital transfers for person-to-person payments, such as remittances to rural areas, are saving money compared to cash payments. Such transfers can have significant development benefits for the recipients, especially women from rural areas who often otherwise face the cost and travel time to bring home money in person. Workers who receive digital wage payments should ideally begin to use their financial accounts for other digital transactions such as rent and utilities. In addition, if accounts are designed to facilitate convenient and affordable withdrawals, workers who have a bank account are likely to save their money there, which could help them accumulate savings in the long run through a default effect.
iii. Cambodia has a solid technological infrastructure base for financial service providers to offer digital wages
Access to technology is the foundation of digital development and digital financial services. The financial infrastructure surrounding Cambodia's garment sector is ripe for digitization. Almost all workers we interviewed have a smartphone and ATMs and mobile agents are mostly accessible — although some factories are still a few kilometers away from the nearest ATM machine.
Digital wage payments in the factories we studied are handled by both bank and Fintech (mobile) providers. All payroll products are interoperable so that users can freely send money to friends and family on different platforms. However, different providers offer workers a wide range of digital payment services, as well as different business models and incentives. For example, bank products typically offer free withdrawals at its ATMs. In contrast, mobile products typically offer workers one free withdrawal per pay period — which creates an incentive for workers to cash out their entire salary on payday.
To accelerate digital wage payments in Cambodia, stakeholders should focus their efforts on four areas
Although Cambodia is well-positioned to expand digital wage payments in the garment industry, challenges remain. They include the perceived cost of wage digitization by employers, workers' limited experience with financial products and services, especially women, and the dominance of the cash ecosystem. To address these barriers, stakeholders should focus their efforts on four areas:
1. Ensure responsible digital wage payments. In September 2021, the UN released the "UN Principles for Responsible Digital Payments" which outlines nine principles that define who needs to be responsible, what it means to be responsible and how to be responsible.
In line with the new UN Principles, workers should have access to appropriate payroll tools, product and fee transparency, and a fair recourse system for dealing with complaints about digital payments. Factories and FSPs should also ensure the protection of workers' identity, payroll, and financial data. Payment information is increasingly being used for marketing and credit scoring, and while data has the potential to offer workers access to formal credit and other financial services, it also raises cybersecurity concerns.
2. Provide support for workers to gain full benefits from wage digitization: The most immediate challenge will be to train workers and help them gain knowledge and confidence about digital financial transactions. The experience in Bangladesh has demonstrated that wage digitization alone is not enough for workers to benefit from digital payroll. Women have unique needs that must be considered when designing interventions. For example, ensuring women receive wages in their own accounts, giving them time on payday to visit cash-out points, and organizing group visits to cash-out points would help them feel secure.
HERproject has already developed a wide range of open-source materials, including posters, videos and tech tools in Khmer, to support garment sector managers and workers, including women's specific needs, move to digital wages. More training and support to workers is needed to help them open and use financial accounts, and train them on savings, budgeting and wage spending.
3. Encourage and enable merchant payment digitization to support the commercial viability of payroll accounts: The current business model of FSPs is to earn money through fees charged for cash-out transactions. But this model needs to evolve to encourage financial transactions to remain digital and for workers to make many transactions during the month, including for purchases. For example, FSPs could make money through fees paid by merchants and banking partners for the service without transferring the costs to low-income workers. Our study shows that most businesses that serve garment workers currently receive customer payments in cash because merchants still need to pay their suppliers in cash. A wider acceptance of digital payments will require a supply chain approach.
4. Foster competition among FSPs: Factories in Cambodia do not allow workers to choose their payroll account provider — they receive their salary into an account chosen by the factory. In the long run, competition for workers as customers will encourage FSPs to design better products and maintain lower prices. Therefore, factories should aim to move beyond direct contracts with FSPs and towards working with a digital payroll service that can deposit workers' wages in any bank or Fintech account.
Efforts to promote the transition from cash to responsible digital wage payments for the garment sector in Cambodia are already underway. One example is ILO's Global Centre on Digital Wages for Decent Work, which will build on the results of this study to engage in Cambodia later this year. As the shift towards digitization continues in Cambodia, there are opportunities to collaborate across organizations to collectively advance digital payments and to move further and faster.
This research has been conducted by BSR's HERproject and IFC, under the ILO/IFC Better Work partnership, in close collaboration with Better Factories Cambodia. The Walt Disney Company (BSR) and the European Union (IFC under ILO/IFC Better Work partnership) funded the work and Microfinance Opportunities assisted in the development of this research.
Leora Klapper, Lead Economist, World Bank
Maria Soledad Requejo, Operations Officer, International Finance Corporation (IFC)
Christine Svarer, HERproject Director, Business for Social Responsibility (BSR)
Covid Recovery Fund Bolsters Laid-Off Workers To Stay Afloat
A young sewing operator realises her potential, one step at a time
Better Work Haiti hosts business forum; stakeholders and investors talk challenges facing sector, shared solutions
Healthy minds matter: New programme aims to engage, educate garment workers on World Mental Health Day and beyond