text:
**Standard HTML:**

	<script type="text/javascript" src="pathto/util.min.js"></script>
	<script type="text/javascript" src="pathto/BINDER.min.js"></script>

	// Or if you prefer to use the all-in-one script that already includes utiljs

	<script type="text/javascript" src="pathto/BINDER.all.min.js"></script>

	// do stuff with BINDER

**AMD Module:**

	// If not using the all-in-one script then requires the 'utiljs' module to be reachable.
	define(['binderjs'], function (binder) {
		// do stuff with binder
	});

**CommonJS Module:**

	// If not using the all-in-one script then requires the 'utiljs' module to be reachable.
	var binder = require('binderjs');

	// do stuff with binder

# API

**BINDER.run()**

	run(fn)

	fn - A function to run and observer all property access invocations.
	return - An object with a subscribe() and dispose() method.
		subscribe(observer) - Observes for changes. Observer can be an object with onNotify() or a function. The observer will be passed a function that when called will run the function passed to run(), and any arguments a property passes when notifying.
		dispose() - Stops observing.

	This method will run a function and observe all property access invocations.

Example:

	BINDER.run(function () {
		document.getElementById('message').innerHTML = model.name();
	}).subscribe(function (fn) {
		fn();
	});

**BINDER.toJSON()**

	toJSON(o, options)

	o - An object with binderjs properties.
	options - Options that describe how to treat properties.
	return - A new POJO with a shallow copy each property, or the specified target model.

	If o is a native type then just the filter function will be invoked if specified.

	Options is a nested object structure with the following form:

	{
		include: [list of property names to include (applies to each item in an Array if the current level is an Array)]
        exclude: [list of property names to exclude (applies to each item in an Array if the current level is an Array)]
        filter(json, original): A filter function called on the value just before returning from toJSON().
        						If the level this filter is specified at is an Array then the filter will be called
        						for each item in the array.

        						Where json is the current POJO/JSON representation of the object being processed.
        						Original is the original representation of the object being processed. If the object
        						being processed is a native type then json and original will be equal.

        						The return value of the filter function is the new JSON/POJO representation of the object
        						being processed. If you just want to modifiy several properties then return the json argument,
        						otherwise you can return an entirely new object.
        properties: {
            property: A filter function that will be called with the value
                    of a property that must return a value. This value can also be a nested options object
                    with the following properties: include, exclude, filter, properties.
        }
	}

Converts an object that contains binderjs properties into a plain-old-javascript-object (POJO) by performing a shallow copy of all properties and adding them to a new object. If the property is a binderjs property then the property's value will be copied.

Example:

	var obj, model;

	model = {
		firstName: BINDER.mkProperty('Darren'),
		lastName: BINDER.mkProperty('Schnare'),
		skills: BINDER.mkProperty(['javascript', 'html', 'css', 'ruby']),
		team: [{
			firstName: BINDER.mkProperty('Alex'),
			lastName: BINDER.mkProperty('Grendo')
		}, {
			firstName: BINDER.mkProperty('Sam'),
			lastName: BINDER.mkProperty('Hilto')
		}, {
			firstName: BINDER.mkProperty('James'),
			lastName: BINDER.mkProperty('Wazzabi')
		}]
	};

	model.fullName = BINDER.mkProperty(function () {
		return model.firstName + ' ' + model.lastName;
	});

	obj = BINDER.toJSON(model);

The result is:

	{
		firstName: "Darren",
		lastName: "Schnare",
		fullName: "Darren Schnare",
		skills: ['javascript', 'html', 'css', 'ruby'],
		team: [{
			firstName: "Alex",
			lastName: "Grendo"
		}, {
			firstName: "Sam",
			lastName: "Hilto"
		}, {
			firstName: "James",
			lastName: "Wazzabi"
		}]
	}

Using the same model we can change how the JSON/POJO object will be generated:

	obj = BINDER.toJSON(model, {
		exclude: ['fullName'],
		properties: {
			skills: function (skill) {
				return skill.charAt(0).toUpperCase() + skill.substring(1);
			},
			team: {
				exclude: ['firstName', 'lastName'],
				filter: function (json, original) {
					json.name = original.firstName + ' ' + original.lastName;
					return json;
				}
			}
		}
	});

The result will be:

	{
		firstName: "Darren",
		lastName: "Schnare",
		skills: ['Javascript', 'Html', 'Css', 'Ruby'],
		team: [{
			name: "Alex Grendo"
		}, {
			name: "Sam Hilto"
		}, {
			name: "James Wazzabi"
		}]
	}

**BINDER.fromJSON()**

	fromJSON(o, options)
	fromJSON(o, options, target)

	o - A POJO object.
	options - Options that describe how to create binderjs properties.
	target - An optional target model to read the properties into.

	If o is a native type then just the filter function will be invoked if specified.

	Options is a nested object with the following form:

	{
		include: [list of property names to include (applies to each item in an Array if the current level is an Array)]
        exclude: [list of property names to exclude (applies to each item in an Array if the current level is an Array)]
        copy: [list of property names to simply copy as is (and optionally filter) without creating a binderjs property
        		(applies to each item in an Array if the current level is an Array)]
        filter(model, json): A filter function called with the value just before returning from fromJSON().
        		This is typically used to format primitive values or add custom functions/properties
        		to a model before returning.

        		Where model is the current model representation of the object being processed. Model may be an object
        		with several properties defined, some might be binderjs properties. The json argument is the
        		JSON/POJO represnetation of the object being processed. If the object being processed is a native type
        		then mdoel and json will be equal.

        		The return value of the filter function is the new model representation of the object
        		being processed. If you just want to modifiy several properties then return the model argument,
        		otherwise you can return an entirely new object.
        properties: {
            property: {
                create(model, owner): A function that returns an object that will be used
                		to create a binder property via BINDER.mkProperty(). If the object returned is a POJO
                		object then it will be used as the options for the call to mkProperty(). This function will be
                		called when attaching properties for native values or arrays to a model. This will not be called
                		if the object being processed is a JSON/POJO object, instead the property will just be the object.

                		Where model is equal to the value returned from calling fromJSON() recursively and owner is
                		the owning model to wich the property will be attached.

                		This method can be used to create a setter for a property or to spefify an 'equals' and 'changed'
                		operators for a property.

                // All other properties are supported: include, exclude, copy, filter, properties.
            }
            // NOTE: If the value of a property is a function instead of an object like described above, then it is
            // treated like a filter function.
        }
	}

Converts a POJO object to an object, making each property binderjs property. All property values are shallow copied unless overriden with the options.

Example:

	var obj, model;

	obj = {
		firstName: 'Darren',
		lastName: 'Schnare',
		skills: ['javascript', 'html', 'css', 'ruby'],
		team: [{
			firstName: 'Alex',
			lastName: 'Grendo'
		}, {
			firstName: 'Sam',
			lastName: 'Hilto'
		}, {
			firstName: 'James',
			lastName: 'Wazzabi'
		}]
	}

	model = BINDER.fromJSON(obj);

The result is:

	{
		firstName: BINDER.mkProperty('Darren')
		lastName: BINDER.mkProperty('Schnare'),
		skills: BINDER.mkPrpoperty(['javascript', 'html', 'css', 'ruby']),
		team: BINDER.mkProperty([{
			firstName: BINDER.mkProperty('Alex'),
			lastName: BINDER.mkProperty('Grendo')
		}, {
			firstName: BINDER.mkProperty('Sam'),
			lastName: BINDER.mkProperty('Hilto')
		}, {
			firstName: BINDER.mkProperty('James'),
			lastName: BINDER.mkProperty('Wazzabi')
		}])
	}

Using the same POJO we can change how the model object will be generated:

	BINDER.fromJSON(o, {
		filter: function (model, json) {
			model.fullName = BINDER.mkProperty(function () {
				return model.firstName + ' ' + model.lastName;
			});

			return model;
		},
		properties: {
			skills: function (model, json) {
				// Since our skills array contains strings it means we are filtering
				// a native object. This means that model and json are equal. So
				// we'll just return a new string.
				return json.charAt(0).toUpperCase() + json.substring(1);
			},
			team: {
				exclude: ['firstName', 'lastName'],
				filter: function (model, json) {
					model.name = BINDER.mkProperty(json.firstName + ' ' + json.lastName);
					return model;
				}
			}
		}
	});

The result will be:

	{
		firstName: BINDER.mkProperty('Darren')
		lastName: BINDER.mkProperty('Schnare'),
		fullName: BINDER.mkProperty(function () {
			return model.firstName + ' ' + model.lastName;
		}),
		skills: BINDER.mkPrpoperty(['Javascript', 'Html', 'Css', 'Ruby']),
		team: BINDER.mkProperty([{
			name: BINDER.mkProperty('Alex Grendo')
		}, {
			name: BINDER.mkProperty('Sam Hilto')
		}, {
			name: BINDER.mkProperty('James Wazzabi')
		}])
	}

---

**BINDER.mkObservable()**

	mkObservable()

Creates an observable object that can be observed for changes.

**observable.subscribe()**

	subscribe(fn)
	subscribe(fn, thisObj)
	subscribe(observer)

	fn - The callback function to have called when the observable has changed.
	thisObj - The optional 'this' object to use when calling the subscribed callback.
	observer - An object with a onNotify() function.
	return - A subscription object with a dispose() function.

	Example Subscriber Signature:

	function (observer, arg1, arg2) {...}

Subscribes to the changes of an observable. When the callback or `onNotify` function are called the observable sending the notification will be passed as an argument along with any additional arguments specified for the notification. If an observer object does not have an `onNotify` method then the observer object will not subscribe to the observerable.

**observable.notify()**

	notify(...)

Notifies all observers if the observable is not blocked and not being throttled. Any arguments passed to this method will be passed along with the observer itself to each subscriber.

**observable.throttle()**

	throttle(duration)

	[default -1]

	duration - The timeout duration in milliseconds. If 0 then all notifications will be asynchronous. Less than 0 for synchronous notifications.

Throttles notifications sent to observers by placing a timeout between the first call to `notify()` and when the observers are actually notified. All subsequent calls to `notify()` will have no effect until the timeout has expired. When the timeout has expired then the observers will be notified.

**observable.block()**

	block()

Pushes a block state onto the internal block stack. While the block stack has at least one block state the observable is said to be blocked and subsequent calls to `notify()` will have no effect.

**observable.unblock()**

	unblock()

Removes a block state from the internal block stack. While the block stack has at least one block state the observable is said to be blocked and subsequent calls to `notify()` will have no effect.

**observable.dispose()**

	dispose()

Removes all observers.

---

**BINDER.mkList()**

	mkList()
	mkList(array)
	mkList(item,...,item)

	array - An Array or another list to copy items from.
	... - A variadic list of items to add to the list.

makes a list that extends `Array` and adheres to the EcmaScript 5 Array specification.

**The following [ES5](http://www.ecma-international.org/publications/standards/Ecma-262.htm) functions are implemented if not present on the native Array (without modifying the Array.prototype):**

**list.indexOf()**

	indexOf(item, [fromIndex])

	item - The item to search for.
	fromIndex - The index to start the search.
	return - The index of the item in the list, -1 otherwise.

**list.lastIndexOf()**

	lastIndexOf(item, [fromIndex])

	item - The item to search for.
	fromIndex - The index to start the search.
	return - The index of the item in the list, -1 otherwise.

**list.reverse()**

	reverse()

	return - This list.

**list.map()**

	map(callback, [thisObj])

	callback - The callback to call on each item.
	thisObj - The context to call callback with.
	return - A new array with the mapped items.

**list.filter()**

	filter(callback, [thisObj])

	callback - The callback to call on each item.
	thisObj - The context to call callback with.
	return - A new array with the filtered items.

**list.forEach()**

	forEach(callback, [thisObj])

	callback - The callback to call on each item.
	thisObj - The context to call callback with.

**list.reduce()**

	reduce(callback, [initialValue])

	callback - The callback to call on each item.
	initialValue - The initial value to assign to previous.
	return - The final result of calling callback.

**list.reduceRight()**

	reduceRight(callback, [initialValue])

	callback - The callback to call on each item.
	initialValue - The initial value to assign to previous.
	return - The final result of calling callback.

**list.some()**

	some(callback, [thisObj])

	callback - The callback to call on each item.
	thisObj - The context to call callback with.
	return - True if callback returns true, false otherwise.

**list.every()**

	every(callback, [thisObj])

	callback - The callback to call on each item.
	thisObj - The context to call callback with.
	return - True if callback always returns true, false otherwise.

**The following methods are added to form the list API:**

**list.collapse()**

	collapse()

Removes all sparce items in this list. A sparce item is any item that has the value of undefined or whose index does not exist in the list.

**list.contains()**

	contains(item)

	item - The item to test for containment.
	return - True if the item is found in the list, false otherwise.

Determines if the specified item is found in the list. The search is performed using strict equality.

**list.occurances()**

	occurances(item)

	item - The item to search for.
	return - The number of times the item occurs in the list.

Determines the number of occurances an item occurs in the list. The search is performed using strict equality.

**list.distinct()**

	distinct()

	return - An Array with all items that occur once in the list.

Produces an `Array` that contains all items that only occur once in the list.

**list.first()**

	first(callback, [thisObj])

	callback - The callback to call on each item.
	thisObj - The context to call callback with.
	return - The item where the callback returned true, undefined otherwise.

Retrieves the first item where the `callback` returns true. The order of the traversal is ascending order.

`callback` will be called with the item, the index of the item and the object being traversed.

**list.last()**

	last(callback, [thisObj])

	callback - The callback to call on each item.
	thisObj - The context to call callback with.
	return - The item where the callback returned true, undefined otherwise.

Retrieves the last item where the `callback` returns true. The order of the traversal is descending order.

`callback` will be called with the item, the index of the item and the object being traversed.

**list.find()**

	find(callback)
	find(callback, fromIndex)
	find(callback, thisObj)
	find(callback, fromIndex, thisObj)

	callback - The callback to call on each item.
	thisObj - The context to call callback with.
	fromIndex - The starting index of the traversal.
	return - An object with the following properties: index, item.

Retrieves the item and index where the `callback` returns true. The order of the traversal is ascending order.

`callback` will be called with the item, the index of the item and the object being traversed.

**list.getItemOperators**

	getItemOperators()

	return - An object with the following properties: equals, changed.

Retrieves the `equals` and `changed` operators used for the items in the list. This method can be overriden to provide `equals` and `changed` operators that are to be used when comparing items in the list. The operators have the following signature:

		equals(a, b) - return true if a is equal to b
		changed(a, b) - return true if a is equal to b but b has changes

By default the `equals` operator tests for strict equality and the `changed` operator tests for strict inequality. These operators are in place to aid in comparing objects that have uniquely identifiable properties, but also have properties that can be updated. When an operator is called it will be called with the `this` object set to the object returned from `getItemOperators`.

For example:

	// With items of the form:
	{id: 12, message: 'Hello World', type: 'text'}

	// The operators could look like this:
	myList.getItemOperators = function () {
		return {
			equals: function (a, b) {
				return a.id === b.id;
			},
			changed: function (a, b) {
				if (this.equals(a, b)) {
					return a.message !== b.message || a.type !== b.type;
				}
				return false;
			}
		};
	};

**list.equals()**

	equals(otherList)

	otherList - The other list (or Array) to compare against.
	return - True if all items in the other list are equal to the this list, false otherwise.

Determines if all items in the `otherList` are in the same order and are equal to the items in this list. Equality is performed by calling the `equals` operator from `getItemOperators`.

**list.changed()**

	changed(otherList)

	otherList - The other list (or Array) to compare against.
	return - True if any item in the ohter list has changed or is not equal to the associated item in this list.

Determines if all items in the `otherList` are in the same order and are equal to the items in this list but have changed. Equality and changed is performed by calling the `equals` and `changed` operators respectively from `getItemOperators`.

**list.compare()**

	compare(otherList)
	compare(otherList, equals, changed)

	otherList - The other list (or Array) to compare against.
	return - A new list with the comparison results for each item in this list.

Retrieves the comparison results by comparing this list against the `otherList`. The `equals` and `changed` operators from `getItemOperators` are used to determine if items are equal or have changed. If custom `equals` and `changed` operators are specified then these operators will be used instead.

Returns a list with a comparison result for each item in this list. Comparison results have the following properties:

	status - The status of the comparison: added, changed, deleted, retained.
	item - The referenced item in this list.
	value - The referenced item in this list (alias for item property).
	index - The index of the referenced item in this list.
	otherItem - The referenced item in the other list.
	otherIndex - The index of the referenced item in the other list.
	toString - Custom toString() function.

**list.merge()**

	merge(otherList)
	merge(otherList, equals, changed)

	otherList - The other list (or Array) to merge against.
	return - A new collapsed list with the results of the merge.

Produces a new list with the results of merging this list with `otherList`. All items that are 'retained' are unmodified, all items that are 'added' are added, all items that are 'deleted' are removed, all items that are 'changed' are replaced with the newer item. If custom `equals` and `changed` operators are specified then these operators will be used instead of the operators retrieved from this list's `getItemOperators` method.

All indices from `otherList` are kept in the resulting list.

**list.mergeWith()**

	mergeWith(otherList)
	mergeWith(otherList, equals, changed)

	otherList - The other list (or Array) to merge against.
	equals - An optional equals operator to use when comparing.
	changed - An optional changed operator to use when comparing.

Merges the `otherList` into this list in-palce. All items that are 'retained' are unmodified, all items that are 'added' are added, all items that are 'deleted' are removed, all items that are 'changed' are replaced with the newer item. If custom `equals` and `changed` operators are specified then these operators will be used instead of the operators retrieved from this list's `getItemOperators` method.

All indices from `otherList` are kept in the resulting list.

**list.remove()**

	remove(item,...,item)

	... - A variadic list of items to remove.

Removes the specified items from this list. The items are found by using strict equality.

**list.removeAt()**

	removeAt(index)

	index - The index of the item to remove.
	return - The item removed or undefined if index is out of bounds.

Removes the item at the specified index.

**list.clear()**

	clear()

Removes all items in the list.

**list.replaceAt()**

	replaceAt(index, item)

	index - The index of the item to replace.
	item - The new item.
	return - The item replaced.

Replaces the item at the specified index.

**list.isEmpty()**

	isEmpty()

Determines if the list has a length of zero.

**list.peek()**

	peek()

Retrieves the last item in the list without removing it.

**list.insert()**

	insert(index, item)

	index - The index to insert at.
	item - The item to insert.

Inserts an item at the specified index and increases the length of the list by one. Returns the index at which the insertion occured, false otherwise.

If `index` is less than `0` then `index` is set to `0`.

If `index` is greater than the list length then `index` is set to `length`.

---

**BINDER.mkObservableList()**

	mkObservableList()
	mkObservableList(array)
	mkObservableList(item,...,item)

makes a list that can be observed for changes.

**observableList.observeItems()**

	observeItems()
	observeItems(value)

	[default false]

	value - Boolean value to set the flag to.
	return - The value of the flag.

Flag that determines if the items in the list will be observed for changes. When being set to true all items in the list will be observed, and when setting to false all items subscriptions will be disposed. In order for items to be observed they must have a `subscribe()` method that returns a subscription object. In other words the subscription model must adhere to the `observable` object interface.

**ObservableLists have the same interface as Array, observable and list.**

ObservableList will notify all observers when the list has been modified via the following methods:

- remove
- removeAt
- replaceAt
- clear
- insert
- mergeWith
- reverse
- pop
- push
- shift
- unshift
- sort
- splice

Each subscriber notified of a change on an observable list will be passed an action argument that gives information regarding what items and action occured.
The action argument is an object with the following properties:

- action - The action that caused the change: add, remove, replace, move, reset, change
- newStartingIndex - The index at which the change occured.
- newItems - The new items involved in the change.
- oldStartingIndex - The index at which a move, remove, replace or change action occured.
- oldItems - The items affected by a replace, remove, move or change action.

The properties for an action argument (and their meaning) are identical to the [NotifyCollectionChangedEventArgs](http://msdn.microsoft.com/en-us/library/system.collections.specialized.notifycollectionchangedeventargs.aspx) class in .NET.

The actions have the following meaning:

- add - One or more items were added to the collection.
- remove - One or more items were removed from the collection.
- replace - One or more items were replaced in the collection.
- move - One or more items were moved within the collection.
- reset - The content of the collection changed dramatically.
- change - An item in the list has been has changed.

Example:

	var list = BINDER.mkObservableList(1, 2, 3);
	list.subscribe(function (observer, actionArgs) {
		// Will receive two notifications (i.e. will be called twice).
		// Once for "2" being removed and once for the item "3" being moved.
		// Changes for each item in the list are notified first then any additions
		// to the list will be notified last.

		// For "2" being removed:
		// actionArgs: {action: "remove", oldStartingIndex: 1, oldItems: [2]}

		// For "3" being moved:
		// actionArgs: {action: "move", newStartingIndex: 1, newItems: [3], oldStartingIndex: 2, oldItems: [3]}
	});
	list.mergeWith([1, 3]);
	list.join(','); // list is now [1,3]

---

**BINDER.mkProperty()**

	mkProperty(value)
	mkProperty(get)
	mkProperty(get, owner)
	mkProperty(get, set)
	mkProperty(get, set, owner)
	mkProperty({value, [equals, changed]})
	mkProperty({get, [set, equals, changed, lazy, owner]})

	value - The property value.
	get - The custom get opertor.
	set - The custom set operator.
	equals - The equals operator. Defaults to using strict equality.
	changed - The changed operator. Defautlts to using strict inequality.
	lazy - Flag indicating that dependencies shouldn't be tracked until first access. Defaults to false.
	owner - The object the property belongs to. Defaults to undefined.

makes an observable property that extends `function`. All properties will dynamically track any property that is accessed during a `get` operation as dependencies. If any dependencies change then this property will notify its observers of the change as well.

Immediately after the property is created a `get` operation is called on the property in order to track any property dependencies accurately. This behaviour can be deferred until the property is first accessed by setting `lazy` to a truthy value.

If the value of the property is an `Array` or `List` then it will be copied into an `ObservableList` and the new list will be the property's value. If the value is already an `ObservableList` then no new list will be created.

If the value is an `Array` or `List` then the `equals` and `changed` operators must be item operators that accept two arguments as opposed to only one for typical property operators. See the `list.getItemOperators` method for more details on item operators. See the `property.equals` and `property.changed` methods for more details on property operators.

If the value is `Observable` then the property will subscribe to the value for changes and relay any notifications and any parameters.

Properties work best when the value is not a `function`.

*Note About Context*

 All properties behave like any other JavaScript funtion in that they derive their context based on how they are called. However, when a property is called without an explicit context, the owner of the property will be used. For example (note that is a contrived example):

 	var model = {
 		type: 'fruit'
 	};
	var nameProperty = BINDER.mkProperty(function () {
		return this.type === 'fruit' ? 'Apple' : 'Tomatoe';
	}, model);

 	var model2 = {
 		type: 'vegetable'
 	};

 	model.name = nameProperty;
 	model2.name = nameProperty;

 	// The context for 'name' will be the 'model' object.
 	model.name(); // Returns 'Apple'

 	// The context for 'name' will be the 'model2' object.
 	nameProperty.clearMemo(); // Clear the memoized value, otherwise will always return 'Apple'.
 	model2.name(); // Returns 'Tomatoe'

 	// In JavaScript the context would typically be inferred to be the 'window' object.
 	// However, instead of inferring 'window' BINDER uses the value of the property's
 	// 'owner' property, which in this case is the 'model' object.
 	nameProperty.clearMemo();
 	nameProperty(); // Returns 'Apple'
 	// These statements are equivalent the one above.
 	nameProperty.clearMemo();
 	nameProperty.call(nameProperty.owner); // Returns 'Apple'
 	nameProperty.clearMemo();
 	nameProperty.get(); // Returns 'Apple'

**BINDER.mkProperty.get()**

	get(property)

	property - A binderjs property or any other value.
	return - If property is a binderjs property then the value of the property, otherwise property.

A convenience method that will retrieve the value of the specified property if it is a binderjs property, otherwise returns property.

---

**property()**

	property()
	property(value)

Retrieves or sets the value of the property. Temporarily the `owner` property of the property is assigned the `this` object if `this` does not equal `undefined`. The custom `get` operator will be called with the `owner` property as the `this` object.

If the value of the property is a `List` and the value being set is not an `Array` then the list will be cleared and the value will be pushed onto the list, otherwise if the value being set is an `Array` then it will be merged with the list, potentially replacing the list's contents. While this occurs all notifications are temporarily blocked so that only one notification occurs.

**property.get()**

	get()

Retrieves the value of the property. The custom `get` operator will be called with the `owner` property as the `this` object. This is an alias to the functional pattern to properties above.

**property.set()**

	set(value)

Sets the value of the property. The custom `set` operator will be called with the `owner` property as the `this` object. This is an alias to the functional pattern to properties above.

**property.dependecnies()**

	dependencies()

	return - List of properties.

Retrieves the reference to the list of properties this property is dependent on. This list should not be modified.

**property.equals()**

	equals(value)

	value - An object or binderjs property to compare.
	return - True if the value is equal to the property's value.

Determines if this property value equals the specified value.

The `equals` operator will be called with a single argument to test against.

For example:

	property.equals = function (other) {
		other = BINDER.mkProperty.get(other);
		return this.get().id === other.id;
	};

**property.changed()**

	changed(value)

	value - An object or binderjs property to compare.

Determines if this property value equals the specified value and the value represents a change.

The `changed` operator will be called with a single argument to test against.

When specifying your own `change` operator you should call `equals` first then perform the change calculation only if the `value` is equal to the property's value.

For example:

	property.changed = function (other) {
		if (this.equals(other)) {
			other = BINDER.mkProperty.get(other);
			return this.get().type !== other.type;
		}
		return false;
	};

**property.clearMemo()**

	clearMemo()

Since all properties are memoized, repeated calls to the `get` operator will result in only one calculation. All other calls will return the memoized value. This method will clear the memoized value and force the next call to the `get` operator to perform a calculation.

**property.isDependent()**

	isDependent()

Determines if the property is dependent on other properties.

**property.toString()**

	toString()

Returs the value of calling `toString` on the property's value. If the value is `null` or `undefined` then returns the empty string.

**property.valueOf()**

	valueOf()

Returns the value of calling `valueOf` on the property's value.

---

**BINDER.mkBinding()**

	mkBinding(source, sink, [type])

	source - The binderjs property that will be the source of the binding.
	sink - The binderjs property that will be the sink of the binding.
	type - The type of binding ('once', 'oneway', 'twoway'[default])
	return - A new binding object.

Creates a binding between two disjoint (i.e. completely independent) binderjs properties.

A binding alwyas flows data from source to sink when created, but the following binding types will dictate whether or not data will flow from sink to source:

	once - Only flows data once from source to sink.
	oneway - Only flows data from source to sink if the source is modified.
				If the sink is modified then no data flow occurs.
	twoway [default] - Flows data from source to sink if the source is modified,
						and flows data from sink to source if the sink is modified.

**binding.type()**

	type()

	return - The type of the binding: 'once', 'oneway', 'twoway'

Retrieves the binding type.

**binding.source()**

	source()

	return - The source binderjs property for this binding.

Retrieves the binding source.

**binding.sink()**

	sink()

	return - The sink binderjs property for this binding.

Retrieves the binding sink.

**binding.dispose()**

	dispose()

Disposes the subscription to the source and sink.


text:
Club SciKidz/TechScientific Maryland
Club SciKidz Chesapeake | 443-561-4000
Tax ID number: 27-3857278
Our Great Staff
The Shelby Jean Scholarship
Buddy Scholarship
Vacation Break Camp / Days Off School
Science & Technology After School Programs
After School Programs Location Schedule
All Summer Camp Locations & Schedules
Club SciKidz Summer Camps – Ages 4 to 5
Club SciKidz Summer Camps – Ages 9 to 12
TechScientific Summer Camps – Ages 11 to 15
Science Shows & Assemblies
Camp View
Summer Camps: Ages 4- 5
Club SciKidz was founded on the principle that parents want to provide their children with exciting, challenging, and life impacting academic experiences. Our camps for Ages 4-5 offer experiments and projects in science, technology, and engineering. We are committed to exposing children to the science and technology of today and tomorrow!
Our 4-5 year old camps can be taken as a half-day option for campers who are new to a camp setting, still need nap time or if you only want an AM program. Camp runs from 9am-1pm. Campers will participate in demo, two activities, one snack and outdoor activity, and lunch. The price is $199 per week. To register for half day camps, use the following coupon code: Jr. Chem, Jurassic, Lil Engineer, Lil Scientist & Intro to Robotics: HALFDAY319 Lil Space Explorer & Tech Machines: HALFDAY299
Best of Club SciKidz (ages 3.5-5)
20Ages 4- 5319
8/24 2020 At Bethany United Methodist Church
Key School Schedule »
Intro to Robotics & Programming
6/22 2020 At St. Martin's-in-the-Field Episcopal School
7/6 2020 At St. John's Parish Day School
7/20 2020 At Seneca Academy7/27 2020 At Holy Cross School8/3 2020 At Saint Peter's
Jr. Chemist
7/13 2020 At Nichols-Bethel United Methodist Church7/20 2020 At St. Martin's-in-the-Field Episcopal School7/20 2020 At Mid Atlantic Community Church (MACC)
6/22 2020 At Covenant of Grace Church8/3 2020 At Timonium United Methodist Church
6/15 2020 At St. John's Parish Day School7/6 2020 At Bethany United Methodist Church8/3 2020 At St. John's Parish Day School8/10 2020 At Glen Mar United Methodist Church
6/22 2020 At Holy Cross School6/22 2020 At Seneca Academy7/13 2020 At Saint Peter's8/17 2020 At Green Acres School
7/13 2020 At St. Martin's-in-the-Field Episcopal School7/20 2020 At Nichols-Bethel United Methodist Church7/27 2020 At Mid Atlantic Community Church (MACC)
7/20 2020 At Covenant of Grace Church
7/20 2020 At St. John's Parish Day School8/3 2020 At Glen Mar United Methodist Church8/10 2020 At St. John's Parish Day School
6/15 2020 At Seneca Academy7/6 2020 At Holy Cross School8/3 2020 At Seneca Academy
Lil Engineer
8/3 2020 At St. Martin's-in-the-Field Episcopal School
7/20 2020 At Timonium United Methodist Church
7/13 2020 At Bethany United Methodist Church7/27 2020 At St. John's Parish Day School8/17 2020 At Bethany United Methodist Church
7/13 2020 At Seneca Academy7/20 2020 At Holy Cross School7/20 2020 At Saint Peter's8/10 2020 At Green Acres School
Lil Scientist
6/15 2020 At St. Martin's-in-the-Field Episcopal School7/27 2020 At Nichols-Bethel United Methodist Church
7/13 2020 At Covenant of Grace Church8/10 2020 At Timonium United Methodist Church
6/22 2020 At Bethany United Methodist Church7/20 2020 At Glen Mar United Methodist Church8/10 2020 At St. John's Parish Day School
6/15 2020 At Holy Cross School7/27 2020 At Seneca Academy8/10 2020 At Saint Peter's
Lil Space Explorer
7/6 2020 At Nichols-Bethel United Methodist Church7/27 2020 At St. Martin's-in-the-Field Episcopal School8/3 2020 At Mid Atlantic Community Church (MACC)
7/13 2020 At St. John's Parish Day School7/27 2020 At Glen Mar United Methodist Church
7/6 2020 At Seneca Academy7/27 2020 At Saint Peter's8/3 2020 At Holy Cross School
Tech Machines
7/6 2020 At St. Martin's-in-the-Field Episcopal School8/10 2020 At Mid Atlantic Community Church (MACC)
6/22 2020 At St. John's Parish Day School
7/13 2020 At Holy Cross School
Stay up to date on everything happening at Club SciKidz.
Visit Our Science Blog »
Robotics & Engineering
Programming & Apps
Film Making & Effects
Extreme Science
Ages 4- 5
Camp Locations

redpajama_set_name: RedPajamaCommonCrawl


Prefix & Suffix Dictionary Use these prefixes and suffixes throughout the unit.Then make copies for students. PREFIXES A prefix is added to the beginning of a base PREFIXES A prefix is added to the beginning of a base... Find prefix/suffix meanings. Enter a prefix or suffix in the box and click the Search button. The finder will then search through the dictionary and return any matches (this search requires correct spelling; prefixes and suffixes can also be looked up alphabetically ).
dictionary of English prefixes and suffixes - Free download as PDF File (.pdf), Text File (.txt) or read online for free.
dictionary of prefixes and suffixes Download dictionary of prefixes and suffixes or read online here in PDF or EPUB. Please click button to get dictionary of prefixes and suffixes book now.
A list of prefixes, starting with the letters A to J, defined in Suffix Prefix Dictionary. Click on a prefix to display its definition and etymology, as well as examples of use. Click on a prefix to display its definition and etymology, as well as examples of use.
And a prefix can be used in combination with one or more suffixes. A simple example is reactivate, which has the prefix re- "again" added to the verb activate. Activate, in turn, is composed of the adjective active "engaged in action" and the suffix -ate, used to form verbs.
Affixes, Prefixes and Suffixes AFFIX A letter or group of letters added to the beginning or end of a word to get a new word with a changed meaning.


Chew Valley U3A has a monthly meeting on the third Monday of the month at Ubley Parish Hall. The meeting starts at 10am with refreshments. Notices are given out at 10.30 and the Speaker begins his or her talk at about 10.40am.
Membership of Chew Valley U3A is £10 per annum but if you just wish to come to listen to a particular speaker the cost is £2.50.
Chew Valley U3A will be holding their monthly meeting at Ubley Village Hall on Monday, 18 March, 2019 so do please come and join us for refreshments at 10.00 am prior to the meeting commencing at 10.30 am. This month the speaker will be Howard Grant who will be representing Sandy Luck from Aldwick Wine.
Refreshments will be served from 10 am and the meeting will commence at 10.30 am. The usual meeting fee will apply (£1 for members or £2.50 for visitors) and we look forward to welcoming new members as well as all existing members, so do please come and join us.
Anyone not in full time employment, in the Third Age (usually over 50 but not necessarily) can join; all you need is interest and enthusiasm! It is called a university, but it has members not students. No qualifications are required and none are given.
U3A (University of the Third Age) is a learning co-operative of older people which enables members to share many educational, creative and leisure activities. Activities are organised mainly in small groups that meat regularly, often in each other's homes. Members, through sharing their knowledge, skills and experience, learn from each other. Speakers are enjoyed on a variety of topics.
The University of The Third Age began in France in 1972. The first British U3A was set up in Cambridge in 1982. In 1999 three local women, Jocelyn Ryder Smith, Anne Woodford and Raynor Nixon, thought that the Chew Valley might support its own U3A for people who did not want to travel as far as Bath, Wells or Bristol. The inaugural meeting was in January 2000 and we have never looked back.
The value of U3A is social as well as keeping the mind stimulated. As well as the more serious study groups we have bridge and Mah Jong, pub lunch groups and a range of outings and trips.
Nationally U3A runs many residential study schools in various parts of Britain and the two main Summer Schools are held at Cirencester.
For more information visit our website chewvalleyu3a.org.uk or the national website www.u3a.org.uk, or phone me.


Three UK universities have been awarded funding from the Government-funded Engineering and Physical Sciences Research Council (EPSRC) to research the technology and economics of energy storage.
The University of Warwick is leading the £3.7 million 'Integrated Market-fit and Affordable Grid-scale Energy Storage' project along with the universities of Nottingham and Loughborough. The project hopes to identify secure, environmentally-friendly and affordable power for the UK.
Energy storage is agreed to be vital to keeping the lights on as more renewable technologies come online globally. Currently energy is hard to store but as grid systems rely on intermittent sources such as the wind and the waves, storing excess energy will be important.
Leading the team is Professor Jihong Wang from the University of Warwick, who said the UK's changing energy landscape would put pressure on our generation needs: "With coal and gas-fired power stations these can be fired up or down to respond to changes in demand – but introducing renewable energies such as wind power can make the system less responsive.


The RS840 rock speaker produce excellent sound in medium sized backyards, pools, patios and gardens and feature an all-weather design that stands up even in the harshest climates. Rated at an impressive 250W power (per speaker) with an 8" polypropylene cone woofer, you'll enjoy audiophile sound quality at a great price.
Dimension: H 10 3/4" x W 20" x D 19"
The RS840 rock speaker single produce excellent sound in medium sized backyards, pools, patios and gardens and feature an all-weather design that stands up even in the harshest climates. Rated at an impressive 250W power (per speaker) with an 8" polypropylene cone woofer, you'll enjoy audiophile sound quality at a great price.
Features: Weatherproof against all weather conditions including salt, water, pool chemicals, & more.
I bought 2 pairs, 4 speakers total. Looking to match with recommended receiver, amp for optimal performance. Reveiver, amp will be outside not in weather, but if one is best for outside, all the better. What do you recommend?
I have a Control4 8 zone amp I am wanting to set-up with wired speakers. I believe the Control4 unit is 120W/channel. Are these suitable speakers for that wattage?
I have a Denon AVR-2809CI and am looking to use these speakers as my zone 2 speakers for the pool area. Will these work with this receiver?
What is the length of the power cord to the speakers ?
Hi, I currently have a Sony STR-DE697 Receiver. I'm looking to purchase the RS840 rock speakers (pair) and the OVC-300 Volume Control. Each speaker will be located 40-50 feet from the receiver. 1) Is my current receiver (Sony STR-DE697) suitable for these speakers and volume control? 2) What wire do you recommend I purchase as well? Thanks!


Are you tired of unwanted hair? Are you tired of shaving, plucking, or waxing?
Laser hair removal is designed for the permanent reduction of unwanted facial and body hair effectively and safely. Laser hair removal works on the principle of selective Photothermolysis. The Laser light destroy the primary target (hair follicle) by exposing it to sufficient heat, while avoiding injury to the surrounding skin.
Melanin is considered the primary chromophore for laser hair removal. Melanin occurs naturally in the skin, and is responsible for determining skin and hair color.
Both men and women seek laser hair removal to remove unwanted hair. The laser designed for hair removal can be used on most parts of the body. Laser Hair removal is commonly done on face, lip, chin, neck, chest, arms, underarm, pubic area, legs, abdomen, back, buttocks, thighs, and toes.
GP FAST Diode Laser Portable GP Fast Diode Laser is now available in its brand new portable version!


text:
Bangladesh Dental Society declares 'Phase Out Mercury Dental Amalgam in the treatment of pregnant women, nursing mother and children within June, 2018'
ESDO in association with Bangladesh Dental Society organized a Press Briefing on March 10, 2018 where BDS declared "Mercury dental amalgam should not be used in the treatment of pregnant women, nursing mother and children after June, 2018". The Press Briefing was held at the Dhaka Reporters Unity, BDS Secretary General Dr. Humayun Kabir Bulbul officially announced this decision.
Dr. Humayun Kabir Bulbul said, "Since Minamata Convention has already entered into force and be an international law, Bangladesh is ought to phase out mercury added products by 2020 as a signatory of the convention." Dr. Kabir said, if a childbearing woman or breastfeeding mother has silver filling in her teeth, the fetus will be exposed to mercury released from the filling throughout the gestation period as it passes via placenta into the fetus. This is very damaging to neurological development because fetus doesn't have a well-developed and effective blood brain barrier. Mercury also passes into breast milk and affects the nursing baby. So BDS have been committed to phase out mercury dental amalgam in Bangladesh by 2020 and its enforcement steps will be taken by 2018; He stated that, as part of BDS & ESDO joint initiative and in solidarity with the World Alliance for Mercury-Free Dentistry movement this is the 1st and significant initiative that has taken by BDS to stop amalgam to Children and nursing mother by June 2018.
"I am hopeful that since Bangladesh is a signatory country of Minamata convention, Government will pay much attention to introduce regulations to stop mercury amalgam in dental treatment," said Syed Marghub Murshed, Former Secretary, Government of the People's Republic of Bangladesh and Chairperson of ESDO in this press briefing.
The vapor that released from mercury dental amalgam poses neurotoxic effects for the neurological systems of fetuses and young children and considering its potential toxicity, mercury is enlisted in the top ten chemicals of major public concern by WHO. This is high time to drain out the use of mercury amalgam in dental treatment to save people as well as environment from the consequential fatal effects of mercury.
Dr. Md. Abul Kashem, president, BDS said, "Mercury threatens not only our lives but also our environment. While many countries have already disallowed mercury amalgam, we, the people of Bangladesh, are far behind. For protecting our future, the use of mercury in dental treatment has to be outlawed right now".
Today's declaration of BDS signifies a way forward towards phasing out dental amalgam for the treatment of the most vulnerable groups of its toxicity. A concrete regulation from the government alongside is an urge for the early ratification of the convention", said Dr. Shahriar Hossain, Executive Vice President of World Alliance.
"In 2013 Bangladesh signed Minamata Convention, the global treaty to phase out all sorts of mercury uses to protect human health and environment from its detrimental effects. On that account this declaration will be an effective move towards supporting the convention," said Siddika Sultana, Executive Director, ESDO.
As Bangladesh is a signatory country of Minamata Convention, BDS together with ESDO made a call to the dental surgeons of Bangladesh for putting an end to the use of mercury amalgam in the treatment of pregnant woman, nursing mother and children within June, 2018. In accordance with that they made an urge to the Government to officially prohibit the use and export of mercury and mercury containing products.
BDS have been working alongside ESDO to create mass awareness among the dental surgeons whereas already a good number of institutions (public/private dental college/dental unit) and dental surgeons phased out practicing mercury amalgam in dental treatment. As recognition of their efforts, we in collaboration with ESDO declared several dental colleges and hospitals as mercury amalgam –free. Also we have initiated recognizing mercury amalgam free dental chambers from this year. In addition, we are making efforts to revise BDS curriculum giving more emphasizes on the harmful effects of mercury amalgam.
Recently "European Union" agreed to enact a ban on dental amalgam fillings use in children under 15 years old and in pregnant and breastfeeding women which takes effect on July 1, 2018.* Considering the importance of mercury–free dentistry especially for pregnant mother, nursing woman and children, we are declaring a ban on mercury amalgam for the treatment of pregnant mother, nursing woman and children by June, 2018 in Bangladesh. We are humbly requesting the distinguished members of the dental society to implement the ban all over Bangladesh.
BDS and ESDO demand to the government on prohibition on use and import of all mercury added products in Bangladesh. Dental professionals said, government should come forward with a concrete regulation in this regard considering the welfare of human health and the environment especially being a signatory country of the Minamata Convention on mercury.
Meeting with Honorable Minister, Ministry of Forest and Environment in Bangladesh
Workshop on "Mercury Free dentistry & Health Care Services in Nepal, 18 March, 2015
Dental amalgam: Alarmingly high mercury levels detected in Pakistan


Probiotic Complete contain four strains of probiotic bacteria, including Lactobacillus acidophilus and Bifidobacterium, as well as Lactobacillus delbrueckii ssp. bulgaricus and Streptococcus thermophilus, which are the beneficial strains of bacteria used in yogurt. A special polysaccharide matrix delivery system protects the probiotics from stomach acid to ensure optimum delivery in the gut. This product requires no refrigeration. There are 2 billion probiotic bacteria in each capsule of Probiotic Complete.
Click here to see the full Probiotic Complete label.
1. We have more bacteria in the gastrointestinal (GI) than human cells throughout our entire body. Probiotic supplements help maintain the balance in favor of healthy gut bacteria. They reduce gut pH and release antibacterial products called bacteriocins. Probiotics may also influence gene expression in pathogenic bacteria and thereby reduce their virulence. Additionally, probiotics can transiently bind to epithelial cells and prevent binding of pathogenic bacteria and their growth.
2. Probiotics stimulate the internal cells of the GI tract to produce mucin and defensins. Mucin serves as an antibacterial shield that prevents the binding of pathogenic bacteria, while defensins are antibacterial proteins. Probiotics also strengthen the bond between internal cells of the GI tract to prevent the absorption of bacteria and allergens.
3. Probiotics influence the immune cells in the wall of the GI tract. They reduce immune release of pro-inflammatory chemicals and stimulate immune cell release of anti-inflammatory chemicals.
Research has demonstrated that significant structural changes occur in the gut bacterial flora with aging, and this was especially evident with respect to bifidobacteria, which are considered to be protective. It is proposed that reductions in these organisms in the large intestine may be related to increased disease risk in the elderly. Researchers endeavored to measure the levels of bifidobacteria in the stool of elderly subjects and found that, indeed, levels were reduced. Remarkably, however, was the fact that one individual highly skewed the results. This subject was described as an unusually healthy and fitness conscious 67 year old male, who had very high counts of these organisms (2).
Researchers recently treated patients suffering with irritable bowel syndrome with probiotics, and found that there was a symptomatic improvement (3,4). In some studies with pregnant and then nursing mothers, supplementation with probiotics led to reduced expression of allergic diseases in their infants (5,6).
Based on the above, it seems reasonable to supplement with probiotics.
1. Sherman PM, Ossa JC, Johnson-Henry K. Unraveling mechanisms of action of probiotics. Nutr Clin Pract. 2009;24:10-14.
2.. Hopkins MJ et al. Age and disease related changes in intestinal bacterial populations assessed by cell culture, 16s rRNA abundance, and community cellular fatty acid profiles. Gut. 2001; 48:198-205.
3. Fan YJ, Chen SJ, Yu YC, Si JM, Kiu B. A probiotic treatment containing Lactobacillus, Bifidobacterium and Enterococcus improves IBS symptoms in an open label trial. J Zhejiang Univ Sci B. 2006; 7(12):987-91.
4. Colecchia A, Vestito A, La Rocca A, Pasqui F, Nikiforaki A, Festi D. Effect of a symbiotic preparation on the clinical manifestations of irritable bowel syndrome, constipation-variant. Results of an open, uncontrolled multicenter study. Minerva Gastroenterol Dietol. 2006; 52(4):349-58.
5. Kalliomaki M, Salminen S, Arvilommi H, Kero P, Koskinen P, Isolauri E. Probiotics in primary prevention of atopic disease: a randomised placebo-controlled trial. Lancet. 2001; 357(9262):1076-79.
6. Rautava S, Kalliomaki M, Isolauri E. Probiotics during pregnancy and breast-feeding might confer immunomodulatory protection against atopic disease in the infant. J Allergy Clin Immunol. 2002; 109(1):119-21.


This topic contains 16 replies, has 6 voices, and was last updated by zabelle_motte 1 year, 7 months ago.
I try to set time for a event and the content of the time field is not saved when I save the event.
Please correct it as soon as possible. It's a very big issue for my customers !!
Dear all – I have exactly the same problem! It is a very big issue for my customer as well.
We haven't noticed an issue like that.
Please try disabling your site plugins to chech for possible conflicts. There are plugins that inject their code on all WP admin edit screens, not only the ones they need. This may result in EM and other plugin's broken functionality.
Well, at the moment I can't set the site "under construction". But maybe it would be interesting for you, if I send you admin access to the site and you can have a look?
I was just checking and can't find any conflicts with other Plugins. FYI: I'm using your plugin (it has been delivered with the theme) with Theme Growler Progression.
after disabling all plugin, I didn't found any conflicts. impossible to save the time when set with only event maker plugin.
Please correct your plugin as soon as possible.
@ftausch, @wklemenz can we have a temporary admin access to your site's please?
Does anybody work here ?
Can we trust anymore into your product ?
We've switched the time format from G \h i \m\i\n (21 h 00 min) to H:i (21:00) and it works.
The next release will contain a fix for thix.
Hello, I've got the same issue here. Can you describe the workaround more precisely ?
we are experiencing a similar issue. The hour-field has become unusable, whenever we enter a time in it, or when we want to change an existing time, the field transforms its content into a date.
Not exactly how things should be, obviously.
You stated that you have changed the time-format and that you will release a fix for this.
Please let us know when this fix will be available, hopefully very soon.
I encounter the same problem and tried to change the hour format (in the Events settings menu, display tab).
But this do not solve the problem.
I am running a WordPress 4.8.1 with a Twenty Fourteen child theme.
Events maker is the 1.6.14 version and I tried disabling all other plugins, this do not solve the problem.
I found the solution to that problem.
I had to mention the same date format in the general settings of my WordPress.


text:
Bloomberg does not file to run in New Hampshire primary
By Tal Axelrod - 11/15/19 05:33 PM EST
Former New York City Mayor Michael Bloomberg Michael Rubens BloombergDNC announces new criteria for New Hampshire debate Bloomberg receives 45-day extension for public financial disclosure report with FEC Bloomberg's congressional endorsers grow to three MORE did not file to run in New Hampshire's first-in-the-nation presidential primary before Friday's 5 p.m. deadline.
The decision to not file in the Granite State's Feb. 11 primary reinforces his expected strategy of not contesting the first four nominating races in Iowa, New Hampshire, Nevada and South Carolina to focus instead on the slate of more than a dozen states competing in Super Tuesday on March 3.
Bloomberg's name did not appear on a list of declared candidates on the New Hampshire Secretary of State's website after the deadline. The department did not immediately respond to a request for comment from The Hill.
He has thus far filed to run in the Democratic primaries in Alabama and Arkansas.
Skipping the four early states could be a big gamble for Bloomberg. Rudy Giuliani Rudy GiulianiDems plan marathon prep for Senate trial, wary of Trump trying to 'game' the process House Democrats release second batch of Parnas materials Republicans will pay on Election Day for politicizing Trump's impeachment MORE, his mayoral predecessor, adopted the same tactic during his 2008 bid for the Republican presidential nomination, only to drop out of the race before the end of January.
Yet Bloomberg, a billionaire businessman who built a financial data and media empire, still threatens to upend the 2020 primary race should he ultimately decide to formally launch a White House bid.
His behemoth war chest and centrist views could put him on a collision course with former Vice President Joe Biden Joe BidenSanders to headline Iowa event amid impeachment trial Hillicon Valley: Biden calls for revoking tech legal shield | DHS chief 'fully expects' Russia to try to interfere in 2020 | Smaller companies testify against Big Tech 'monopoly power' Hill.TV's Krystal Ball on Sanders-Warren feud: 'Don't play to the pundits, play to voters' MORE and South Bend, Ind., Mayor Pete Buttigieg Peter (Pete) Paul ButtigiegSanders to headline Iowa event amid impeachment trial Hill.TV's Krystal Ball on Sanders-Warren feud: 'Don't play to the pundits, play to voters' Poll: Sanders holds 5-point lead over Buttigieg in New Hampshire MORE, the leading moderates in the Democratic race, even as his wealth could also make him the target of claims from progressives that he is trying to buy his way into the election.
Bloomberg had previously said in March that he would not run for president, but speculation began to swirl that he would reconsider after Biden stumbled in a handful of polls and fell short of other front-runners in fundraising.
"We now need to finish the job and ensure that Trump is defeated — but Mike is increasingly concerned that the current field of candidates is not well positioned to do that," Howard Wolfson, a close adviser to Bloomberg, said earlier this month.
Despite his virtually endless resources, Bloomberg would still face an uphill battle to clinch the Democratic Party's nomination — his competitors have been canvassing and organizing across the country for months and national polling shows him in the low single digits.
Tags Michael Bloomberg Elizabeth Warren Pete Buttigieg Rudy Giuliani Joe Biden


Today I sat down to record Episode 5 of Season 1 of the Magpie Brûlé podcast, but with the developments from late yesterday, I decided to do this episode a bit different. I decided to take a deep dive into the SNC/PMO Scandal and go through the recording of Jody Wilson-Raybould and Michael Wernick that everyone is talking about clip by clip. I offer my analysis and discuss what this all might mean going forward. You can listen at the link below or your can download it on iTunes. Enjoy!


text:
How Will the Changes to Insurance Impact Personal Injury Cases?
From the Health Care Group
The Patient Protection and Affordable Care Act (the "ACA") is the most sweeping healthcare law in decades. It has three overarching tenets:
All persons will be required to obtain health insurance or pay a tax penalty;
All health insurance policies must comply with certain minimum requirements regarding the scope of coverage and permissible restrictions on coverage; and
The federal government will implement a series of economic incentives and subsidies to facilitate widespread adoption and issuance of health insurance throughout the United States.
Like any broad, wide-ranging legislation, the ACA will have significant effects in related areas, including personal injury litigation. These materials briefly identify areas of significant change in how health insurance will work under the ACA, and what it means to settlement and resolution of personal injury claims. The focus here is on effects and interactions under Washington law, and it is important to remember that the impacts will be different in different states, due to underlying variations in tort law, evidence rules, statutory damages caps, and more. The main changes to insurance laws are addressed in turn, each followed by a discussion of ways in which these changes may affect resolution and management of personal injury claims.
A. The "Individual Mandate" Requirements and Exemptions
At the center of the ACA is the requirement that all citizens purchase health insurance or pay a tax penalty. Beginning in 2014, the law requires that individuals must maintain "minimum essential coverage" for themselves and their dependents. This "individual mandate" provides that one must either be insured or pay a tax (which penalty is colorfully identified in the text of the Act itself as the "individual shared responsibility payment"). The underlying policy is that widespread purchase of insurance will help maintain affordability and increase competition, while allowing insurers to mitigate risk pool issues that arise from removal of limitations on pre-existing conditions, guaranteed issue requirements, and maximum payments under the policies. See Nat'l Fed'n of Indep. Bus. v. Sebelius, 132 S. Ct. 2566, 2585, 183 L. Ed. 2d 450 (2012) ("In addition, the mandate forces into the insurance risk pool more healthy individuals, whose premiums on average will be higher than their health care expenses. This allows insurers to subsidize the costs of covering the unhealthy individuals the reforms require them to accept.").
The nature of the tax penalty imposed for failure to obtain the required coverage depends on the age and income of the person without insurance. For 2014, the penalty is the greater of 1% of household income above the tax return filing threshold (about $10,000 for an individual), or $95 per person for the year ($47.50 for a child under age 18). The maximum penalty if using the percentage-income method is the national average premium for a bronze plan. The maximum penalty per family if using the flat-fee method is $285.
Beginning in 2015, the penalty increases every year. Beginning January 1, 2015, the penalty becomes the greater of 2% of household income (again capped at the average national premium for a bronze plan) or $325 per person ($162.50 per child under age 18, with the aggregate penalty capped at $975). In 2016, it is set at 2.5% of household income, or $695 per person. After that time, the penalty is indexed to inflation. All tax penalties are paid via federal income tax return.
But what plans are good enough to count as "minimum essential coverage" for purposes of satisfying the mandate and so avoiding the tax? The ACA defines minimum essential coverage to include:
Coverage under certain government-sponsored plans;
Employer-sponsored plans, with respect to any employee;
All plans obtained in the individual marketplaces set up under the ACA;
"Grandfathered" health plans; and
Any other health benefits coverage, such as a state health plan, that is recognized as "qualifying" by the Secretary for Health and Human Services.
Importantly, the definition of "minimum essential coverage" does not include health coverage that deals with benefits that are excepted from the ACA requirements, such as dental-only plans.
Like all good rules, however, there are exceptions to the "individual mandate" requirement. Some individuals are exempt from the mandate or the penalty, while others may receive financial assistance to help pay for the costs of health insurance. There are numerous categories of exemptions, including one seeming "catch-all" exemption. Presently, exemptions are available to persons who:
Are uninsured for less than 3 months of the year;
Would have to spend more than 8% of household income to obtain the lowest-price coverage available;
Do not have to file an income tax return because that person's income is too low;
Are members of federally-recognized tribes, or are otherwise eligible for services through an Indian Health Services provider;
Are members of a recognized health care sharing ministry;
Belong to religious sects or organizations that have religious objections to insurances, including Social Security and Medicare;
Are incarcerated, but not those being held pending disposition of charges;
Are not lawfully present in the United States; or
Qualify for a "hardship exemption"
This last category—the "hardship exemption"—in turn reflects fourteen types of approved "hardships" that allow an individual to avoid the mandate/penalty:
Homelessness;
Eviction within the past 6 months, or facing eviction or foreclosure;
Receipt of a shut-off notice from utility company;
Domestic violence victim;
Death of a close family member;
Victim of flood, fire, or other disaster that caused substantial damage to individual's property;
Filed for bankruptcy within the last 6 months;
Medical expenses that within past 24 months resulting in substantial debt;
Unexpected increase in necessary expenses due to caring for ill, disabled, or aging family member;
Will claim as a tax dependent a child who has been denied coverage by Medicaid and CHIP, and another person is required to give medical support to the child. The individual in this circumstance will be exempt from paying the penalty for the child;
Eligibility appeals decision means that individual is eligible for enrollment for a plan in the Marketplace, for lower costs on premiums, or for subsidies for a time period where the individual was not enrolled in a qualified Marketplace plan;
Ineligibility for Medicaid due to the resident state's failure to expand eligibility for Medicaid under the ACA;
Individual insurance plan was cancelled because of the ACA, and individual attests to a "belief" that the other Marketplace plans are unaffordable; or
Another hardship in obtaining health insurance.
Any of these hardships waivers may be obtained by filing a form that is submitted to an exemption processing center. The forms are available for download, and are located here: https://marketplace.cms.gov/applications-and-forms/hardship-exemption.pdf. Hardship exemptions typically will cover the month before the hardship, the month of the hardship, and the month following the hardship. These exemptions can be extended up to a full calendar year, on request.
As of June 2014, the Congressional Budget Office revised downward its estimate of people who will have to pay a fine in 2016, from six million to four million. But the CBO also estimated that 30 million non-elderly residents still would be uninsured in 2016. Thus, the exemptions are estimated to cover a very significant portion of the population, allowing up to 5% of the total population to avoid paying the tax penalty contemplated by the individual mandate.
For purposes of resolving personal injury claims, why does any of this matter? Taken with the fact that the new policies under the ACA follow "guaranteed issue" requirements (discussed in greater detail in the next section), almost all citizens will have access to health insurance, regardless of their age or existing state of health. That has implications for arguments and settlement value discussions surrounding the proper valuation of a future medical special damages claim in a personal injury case, as the costs of healthcare are going to be shifted more and more to third-party insurers and their associated risk pools. Although collateral source rule issues in Washington will limit the admissibility of insurance payments at trial, there may be methods available to creative counsel to push the envelope on this issue, including by attempting to "work in" assumptions about future medical costs into expert opinions (such as life care planners) and the future costs of healthcare.
B. The "Guaranteed Issue" Requirements
Under the ACA, all health insurance policies must be sold on a "guaranteed issue" basis. This simply means that insurers must guarantee that all applicants will be granted insurance, regardless of their health status or other factors. What formerly may have been disqualifying or cost-prohibitive conditions that led to unavailability of insurance in the private marketplace—chronic issues like cancer, cardiovascular disease, or significant disability—no longer will prevent issuance of insurance at the established marketplace cost.
This "guaranteed issue" requirement applies to all group plans and to new plans on the individual market, but not to grandfathered individual plans. Grandfathered plans are those that were in existence as of the date that the ACA was enacted (March 23, 2010). These plans (which may be individual or group plans) are exempt from many of the ACA reforms, including guaranteed issue requirements. However, any uninsured person can now purchase a policy in an ACA marketplace instead.
Prior to the ACA, there were already laws in place that required insurers to guarantee issuance for certain types of policies. Under the Health Insurance Portability and Accountability Act of 1996 (HIPAA), insurers already had the duty to guarantee issuance and renewal of coverage to small groups under certain circumstances. These requirements remain in place, even for the grandfathered plans.
Again, the question arises: how does this new guaranteed issue regulation affect our work in personal injury litigation? The answer is much more policy focused than immediately practical. There likely will be a concerted effort among insurers nationwide to begin to chip away at states' rules prohibiting presentation of collateral source evidence, with the aim of permitting the introduction of evidence regarding the availability of insurance to the injured person for future medical needs, with an out-of-pocket maximum annually. A plaintiff already has the duty under Washington law to act "reasonably" to mitigate damages. See, e.g., WPI 33.01 (avoidable consequences in personal injury generally); WPI 33.02 (avoidable consequences – failure to secure treatment); RCW 4.22.015 (defining "fault" to include "unreasonable failure to avoid an injury or to mitigate damages"). It stands to reason that obtaining and maintaining insurance post-lawsuit would be a "reasonable" decision for nearly all plaintiffs, given guaranteed issuance and annual out-of-pocket maximums, plus the penalty requirement for failing to obtain insurance. If the fact-finder were permitted to consider and modify a damages award for future medical expenses that accounted for guaranteed insurance being available, it could be a hugely-significant way for defendants and liability insurers to avoid or reduce expensive awards of future medical expenses.
If rule changes took place in Washington and elsewhere to permit presentation of this evidence, arguments could be made that the annual out-of-pocket maximum is the proper measure of a future damages award, regardless of the nature and scope of the care needed. Push-back on this would be based on the sound principles underlying the collateral source rule, and from practical observations including limitations on what is and is not covered by the ACA minimum requirements. For instance, home and community based services such as attendant care, home care, assisted living facilities, nursing homes, and the like are typically not mandated for coverage under an ACA-approved plan. Future medical damages for these categories of treatment and care would still probably be subject to full recovery, even with a weakened collateral source rule.
Abrogation of the collateral source rule has not happened in Washington (yet), but cautious practitioners should expect and pay attention to competing efforts to attack/defend the doctrine in Olympia and in state houses across the country. In the context of multi-state litigation, MDL management and investigation, or other litigation involving various jurisdictions, the varied collateral source rules of the several states will matter a great deal in forum selection, removal decisions, and in the inclusion and challenge to jurisdiction and venue selection clauses in contracts of all kinds.
C. How Will the New State Health Insurance Exchanges Impact Injury Settlements?
As has been well-publicized, an important component of the ACA is the creation of state-based insurance exchanges, which are to act as marketplaces in which insurers compete on price and coverage for policyholders. From the consumer point of view, price transparency and coverage transparency are significant positive developments under the ACA that the exchanges help enable. The federal government facilitates the private exchanges of many states that have failed or declined to create their own domestic exchanges, via the initially ill-fated website www.healthcare.gov. In Washington, the state has met with preliminary success—at least as compared to the federal government—in setting up a useable system at www.wahealthplanfinder.org.
In and of themselves, the exchanges probably will not significantly affect personal injury settlements or damages awards. However, for purposes of expert testimony or examination, knowledge of the costs and scope of available coverage may be helpful in delineating and establishing the appropriate measure of future medical damages. Local state exchange websites and the federal website will facilitate this in an accurate, meaningful way. This would especially be the case if Washington's strong collateral source rule was limited or changed in some way to permit introduction of evidence regarding the availability of insurance for some or all future medical expenses.
As health insurance becomes increasingly common, the relevance of the "list price" of health care services also will continue to dwindle. Thus the "reasonable" costs of health care (for purposes of a "reasonable and necessary" analysis in presenting costs of medical special damages), will increasingly be viewed in terms of what the available insurance on the exchanges will pay, as opposed to the "rack rate" that a non-insured person pays.
Indeed, 26 U.S.C. § 501(r)(5) requires that any hospital seeking § 501(c)(3) non-profit status must limit the amounts it charges to patients eligible for assistance under the hospital's financial assistance policy. A non-profit hospital can charge no more than the amounts the hospital "generally billed to individuals who have insurance covering such care." As the number of insured people increases and as the number of insured procedures increases, variances in the costs of medical procedures formerly informed by the availability and access of a plaintiff to insurance will begin to be replaced by a straightforward analysis based on the what the available insurance plans under the ACA will pay for that service. Access to this information via online state exchanges can be of use to the personal injury attorney and any consulting experts in evaluating damages in the settlement or trial context.
D. Pre-Existing Conditions under the ACA
As noted above, the guaranteed issue requirements of the ACA mean that coverage cannot be denied to an applicant for insurance due to pre-existing conditions; under the ACA, an individual with preexisting conditions must be covered without regard to medical history. A "preexisting condition" is defined as a condition that existed prior to the effective date of health coverage, whether or not any medical advice, diagnosis, care or treatment was recommended or received prior to that date. This aspect of the ACA was effective January 1, 2014. In the context of many personal injury cases, a post-injury plaintiff who would have been uninsurable before the ACA thus will have full coverage available for purchase, regardless of the scope and nature of that person's injuries.
Practically speaking, this does not materially change the calculus in the context of litigating the most severe, catastrophic injury cases. In those claims, the individuals typically can readily qualify for Medicare following a disability finding by the Social Security Administration (Medicare is typically available two years following the disability determination). These cases will probably be mostly unaffected by the availability of health insurance unburdened by pre-existing condition exclusions, as even in the mitigation context a "reasonable person" is likely to choose lower-cost, comprehensive Medicare coverage over most ACA marketplace plans. All of the joys of settling personal injury cases subject to the Medicare Secondary Payer Recovery Act are still there to be had, but the ACA is less likely to precipitate significant changes to the way that is done.
In more marginal injury cases, however, where a plaintiff's injuries are significant but not fully disabling, or where injuries may require ongoing care but are not disabling at all, this new provision is important. The elimination of a pre-existing condition exclusion makes it almost assured that in the mitigation context a "reasonable person" would purchase insurance of some sort under the ACA, and so would control and cap many of their future health care costs. Although in the face of collateral source rule restrictions this remains mostly immaterial for evidentiary purposes, that rule of exclusion may well change soon, and will certainly be challenged.
E. New Catastrophic Healthcare Plans
The ACA allows for purchase of a "catastrophic plan" to provide coverage for qualified persons who do not purchase one of the "metal" level plans. Primarily reserved for people younger than 30, the ACA catastrophic plans cover three annual primary care visits and preventive services at no cost, including disease screenings and vaccinations. Beyond that, the patient pays all medical expenses out of pocket up to a steep deductible, generally $6,350 for individuals and $12,700 for families. People older than 30 who shop for health insurance in the ACA exchanges are usually required to choose a more comprehensive plan but may buy a catastrophic plan under one of the law's many exemptions, identified above. If an individual buys a catastrophic plan, premium tax credits or lower out-of-pocket costs based on income are not available. Regardless of the policy holder's income, that person will pay the standard price for the catastrophic plan.
The availability of catastrophic plans could complicate a future damages analysis that relies on the ability to present collateral source evidence, especially for younger plaintiffs who may have this coverage more commonly. But even were this plan used as the basis for calculating future medical expenses for most services, it would only increase the annual out-of-pocket amounts that might be subject to recovery by a relatively small amount.
F. Subsidizing Insurance Premiums
A major provision of the ACA provides subsidies for insurance premiums and health care costs to those with low income, and those who do not receive health insurance through the government or a family member's employer. Those whose family income is more than 133% and less than 400% of the poverty rate are eligible for significant subsidies that limit the share of income spent on premiums for an insurance policy (ranging from 2% to 9.5% of income) and lower limits on out-of-pocket expenditures (one-third to two-thirds of the Health Care Savings Account limit).
The subsidy is under attack in the courts, and the Supreme Court of the United States recently granted certiorari in a case challenging the award of subsidies given the ACA's unartful subsidy language. Section 1311 of the ACA provides that subsidies will be awarded by the federal government to eligible consumers who purchase insurance from an exchange "established by the State." However, 34 states currently utilize the federal exchange (www.healthcare.gov), as opposed to operating an independent State-run exchange.
The Federal Circuit Court of Appeals held in Halbig v. Burwell that this provision means that any person who obtained care via the federal exchange does not qualify for a tax credit under the law. 758 F.3d 390, 399 (D.C. Cir. 2014). In King v. Burwell, the Fourth Circuit held the opposite, and found a federal exchange-based subsidy compliant with the intent of the law, as more fully revealed by a contextual reading of the subsidy provision with the other sections of the ACA. 759 F.3d 358, 373–76 (4th Cir. 2014). The Supreme Court granted certiorari in the Fourth Circuit case on November 7, 2014.
The federal government reports that approximately 86% of current enrollees qualify for some form of subsidy. If this tax incentive provision were read out of the law, the ACA would be left with a significant handicap. With the current level of opposition to the ACA in Congress, it is unlikely that the ACA could successfully be restructured to remedy this issue. Indeed, Circuit Judge Harry Edwards stated in his Halbig dissent that the litigation on this issue is a "not-so-veiled attempt to gut the Patient Protection and Affordable Care Act." 758 F.3d at 412–13 (Edwards, J., dissenting). Whether any of the structural changes afforded by the ACA will remain enforceable if the Supreme Court reverses the Fourth Circuit remains to be seen.
G. Practical Tips for Managing a Personal Injury Case, in Light of the ACA
The following are a few practical considerations for managing a personal injury case in light of the ACA, and given the likely growth of collateral source challenges that it will precipitate:
In discovery as defense counsel, get a copy of the plaintiff's health insurance policy. This is often overlooked in discovery now, as it is rarely of significance, given Washington's collateral source rule. But with ACA policies and the individual mandate, knowing what elements of the future medical damages are covered can be helpful in developing a competing damages calculation.
In settlement negotiations, ensure that subrogation is involved early. For mediation or other ADR options, have a representative available in real-time. Use your neutral to facilitate negotiation of liens and subrogation interests. While this has always been good and common practice in personal injury cases, where there is an ACA plan involved, this can be even more helpful in establishing and accounting for variances in future medical expenses.
Consider the usefulness of special needs trusts. These trusts may be unnecessary for individuals whose future medical needs can now be adequately met with insurance. For medical care not subject to the ACA's coverage mandate, however, these trusts can still be a means of ensuring that the plaintiff is not left financially ineligible for publicly-funded programs.
Consider pleading mitigation of damages in combination with a request for reduction of any award based on collateral source offsets as an affirmative defenses in a defendant's answer.
Post-judgment, consider making a motion for remittitur. A challenge to a jury award for inclusion of medical expenses that would be covered by ACA insurance can afford a judge an opportunity to rule on this issue.
Plaintiffs' counsel should continue to rely and cite Washington law to address any claimed or sought offset as an impermissible collateral source reduction.
IP: Ten Things to Consider if You Own a Website
Gifting and Leveraged Gifting


Michael-Shawn Dugar of the Athletic and the Seahawks Man 2 Man Podcast joins the show this week to talk about the NFL's Annual League Meeting down in Arizona and his encounter with coach Pete Carroll who is challenging the popular opinion of the most important meal of the day. Brandan and Mike talk about the departure of Earl Thomas and how the best move the Seahawks made was to stay away from paying high-priced free agents.
A couple big takeaways from the meetings in Arizona is just how reactionary the league continues to be when it comes to changing the rules. Pass interference is now reviewable and we may see a change down the road to how playoff games are handled in overtime after Tom Brady quickly scored on the Chiefs to send New England to another Super Bowl.
Sam Marcoux, co-host of the Perfectville Podcast, jumps on later in the show to talk about his feelings on the change to make pass interference calls reviewable. He clearly still holds a grudge against Doug Baldwin after the Seahawks beat Miami back in 2016. What will be some of the consequences of the rule change? The guys talk about expectations of increased game time, how coaches will save their challenges specifically for pass interference calls, and maybe some increases in seeing offensive pass interference calls. The hope of course is that the implementation results in making sure the calls on the field are correct.
While we don't often talk about the Dolphins on the show, Miami can show Seahawks fans just how difficult it can be to replace a franchise quarterback. Ryan Tannehill is now out and at least Dolphins fans are starting to see a plan in place for having a tough year or two with the potential that they can be this year's Cleveland Browns sometime in the near future.


The first ship bringing captive African peoples to Louisiana arrived in 1719. In the next twelve years, another 5,561 African people were brought to French Colonial Louisiana. They came from West Africa — the Fon and Ewe from Dahomey, the Bambara from Mali, and the Wolof (Diaulauf in French), Fulani and Mandingo (Malinka) from Mali and Senegal. These new arrivals from Africa encountered a chaotic natural, religious, political and cultural setting. But from the very beginning, they contributed their own culture, skills and artistry that made Colonial Louisiana distinctive, a distinction that survives to this day in modem New Orleans.
That first two ships, the Duc Dumaine and l'Aurore, arriving from Whydah (Juda, Ouidah) in the Gulf of Benin, brought Fon peoples, but in addition, rice and "persons who knew how to cultivate it," according to the specific instructions of governor Bienville in Nouvelle Orléans. This variety of wet rice provided a stable, reliable source of food that sustained the colony even when rain and floods ravaged crops of corn and other grains. It was the African peoples who turned the swamps into rice fields, building dikes and valves to control the water. It was the Wolof people from Senegal who cooked the rice with okra and seafood to create jambalaya. And it was the Bambara of Mali who named a dish gumbo. The Bambara term for okra was gombo. Another food staple that is well known today with its origins in Africa is cous cous.
The African peoples were put to work clearing the land, digging canals, building and restoring levees, and planting and harvesting crops. But they were also called upon to share their skills and expertise in metalworking, boat building, river transport and navigation, and medicine. Indeed, their religious beliefs provided the basis for virtually all of the needs of a colonial society — healing, magic and art. Their effective use of herbs aided in curing and preventing diseases (their cure for scurvy was discovered, and disregarded, as early as 1734, involving the application of a paste of herbs and lemon juice). But this knowledge also informed the practice of magic using herbs, poisons and charms. This latter skill survives in contemporary Louisiana today, known by the African terms gris-gris, zin zin and wanga. Religion also filled the art created by the African people in Louisiana. The colors, patterns, designs, signs, numbers and ornaments of the art object all had religious significance. For example, the number 3 represented men, the number 4 represented women and the number 7 represented all people and god.
In Bambara life there was no separation between artisanship, artistic creation and religious observance; they were animists wherein they drew upon the world around them and its denizens, like antelopes, serpents, rabbits and turtles for their spiritual life. This exhibition contains examples of art and wrought iron work from three of the locations in Africa that were home to the peoples brought to French colonial Louisiana in the first half of the 18th century. Primarily, the masks, head dresses, locks and society sculptures are Bambara because two thirds of the people brought to Louisiana were Bambara from the country we now know as Mali. The ships' captains bought the Bambara from their then conquerors, the Mandingo or Malinka, who were Moslems. The Bambara captifs were brought to the Senegal coast via the Gambia River. Futa was the source of the Gambia and the trip to the Atlantic was seven hundred miles. The Gambia River, the most navigable waterway in West Africa, was a long-time highway for slave ships from the 1500s. The French ships that bought the slaves at Goré, Arguin or Port Louis had embarked at Brest, Nantes or Lorient in Brittany. The latter city became the capital of the French Company of the Indies, reorganized into a world-wide slaving and mercantile enterprise by John Law in the early 1720s.
The Bambara art, sculpture and wrought iron were left behind but they brought with them, and preserved, besides the tiny charms and symbolic jewelry, the culture of creativity and joyfulness. Since Bambara culture was an animist culture and their spiritual life emanated from nature and the animals and creatures around them, their griots told animal tales and their sculptors carved in Africa, but since griots and sculptors and iron workers were considered very special contributors to Bambara culture, they were not warriors and they were seldom captured or sold.


text:
Home Enterprise Unexpected Salesforce Shutdown Hurts Partners
Unexpected Salesforce Shutdown Hurts Partners
By Michael Hickins | March 09, 2007
Salesforce.com partners had to scramble their customer service crews in a hurry this week because of an unexpected shutdown of the software-as-a-service (SaaS) vendor's platform, internetnews.com has learned.
Salesforce.com, the leading vendor of on-demand customer relationship management, seemed to have put doubts about the SaaS delivery model to rest with a fairly flawless performance following its well-publicized service outage in December 2005.
Rather than affecting its own customers directly, this new shutdown has created problems for other SaaS vendors that rely on its AppExchange platform to win customers. One of the partners, who wished to remain anonymous in order to preserve its relationship with Salesforce.com, complained that it was unable to deliver its product for sale or trial for two days.
"Our customers think it's our fault; we looked like fools this week for suggesting they visit the AppExchange to access the product," the partner said.
More than the outage itself, the partner complained that Salesforce.com failed to explain what was going on. "That technology fails, we understand. The failure to communicate, we do not."
Salesforce.com admitted that the outage was due to maintenance, but thought it had warned its partners that the service would be going down.
"It seems like we could have done a better job in communicating," said Bruce Francis, Salesforce.com vice president of corporate strategy in an e-mail. "We apologize for the inconvenience and pledge to do a better job of communicating with our partners in the future."
Beth Enslow, who follows SaaS for the Aberdeen Group, warned that this kind of shutdown takes on increasing importance because an increasing number of mission-critical applications are being run on an on-demand basis.
"Unplanned-for downtimes and performance issues have a significant impact on customers' businesses and how they make their money," she said.
One such incident won't affect Salesforce.com or its partners because of the inherent value of the SaaS model, she said, but "it's a red flag that they need to over-communicate to their partners and almost over-invest in their infrastructure so they can avoid these kinds of situations," she told internetnews.com.


text:
Ex-prison boss and businessman admit to bribery scheme
Epps charged in federal corruption case
Updated: 10:40 PM CST Feb 25, 2015
Ross Adams
A former prison official and a businessman are changing their pleas in federal court and admitting to a bribery scheme involving hundreds of millions of dollars in state contracts.Watch the mobile reportFormer Mississippi Corrections Commissioner Christopher Epps pleaded guilty Wednesday to money laundering conspiracy and income tax evasion that carried on for nearly a decade.Sentencing is set for June 9. Epps faces up to 23 years in prison and fines of $750,000. He's also agreed to forfeit nearly $2 million in assets.16 WAPT's Ross Adam spoke with Epps after he left the courtroom."Obviously this is real terrible, and I'm sorry," Epps said.Read: Epps indictmentEpps took a plea deal on a 49-count indictment that could've sent him to prison for more than 300 years.Brandon businessman Cecil McCrory's lawyer said his client plans to plead guilty later Wednesday, although he wouldn't say which charges were involved.Prosecutors said Epps received about $1.5 million in bribes from McCrory and others, and in exchange steered contracts to companies owned by or associated with the businessman.Each man had previously pleaded not guilty.Epps admitted to tax fraud Wednesday, saying he understated his 2007 income by $200,000. The assets he will give up include two Mercedes vehicles, a condo on the Gulf Coast and a $300,000 home in Flowood. FBI agents also seized $69,000 in cash from his home."(I) also would like to apologize to the citizens of this great state," Epps said.Prosecutors said they intend to go after several other corrupt politicians.
A former prison official and a businessman are changing their pleas in federal court and admitting to a bribery scheme involving hundreds of millions of dollars in state contracts.
Watch the mobile report
Prison bribery case now up to $800 million, prosecutors say
Epps gets wife a car the day after court hearing
Epps enters court
Former Mississippi Corrections Commissioner Christopher Epps pleaded guilty Wednesday to money laundering conspiracy and income tax evasion that carried on for nearly a decade.
Sentencing is set for June 9. Epps faces up to 23 years in prison and fines of $750,000. He's also agreed to forfeit nearly $2 million in assets.
16 WAPT's Ross Adam spoke with Epps after he left the courtroom.
"Obviously this is real terrible, and I'm sorry," Epps said.
Read: Epps indictment
Epps took a plea deal on a 49-count indictment that could've sent him to prison for more than 300 years.
Brandon businessman Cecil McCrory's lawyer said his client plans to plead guilty later Wednesday, although he wouldn't say which charges were involved.
Prosecutors said Epps received about $1.5 million in bribes from McCrory and others, and in exchange steered contracts to companies owned by or associated with the businessman.
Each man had previously pleaded not guilty.
Epps admitted to tax fraud Wednesday, saying he understated his 2007 income by $200,000. The assets he will give up include two Mercedes vehicles, a condo on the Gulf Coast and a $300,000 home in Flowood. FBI agents also seized $69,000 in cash from his home.
"(I) also would like to apologize to the citizens of this great state," Epps said.
Prosecutors said they intend to go after several other corrupt politicians.