Selection is a simple construct that operates on a nested property in the non-primitive Units' value, i.e.: ListUnit, GenericUnit, and DictUnit.
Selection offers the ability to access and observe a nested property at a certain path in a Unit's value.

Make a Selection

// create a Unit
const preferencesUnit = new DictUnit({initialValue:
{color: 'blue', music: 'EDM', game: 'GTA5'}
// make a selection
// the 'select' method takes path as it's params
const musicPreference ='music')

Static Value Access

After creating a Selection object, we can access the value at the selected path anytime, without worrying if the value still exists or not.
// access the value at the selected path
// logs 'EDM' immediately

Reactive Value Access

To observe the value over time we can make an Observable at the selected path, and subscribe to it.
// create an Observable
const musicPreference$ = musicPreference.asObservable()
// subsribe for reactive access
musicPreference$.subscribe(value => console.log(value))
// logs 'EDM' immediately, and
// will log whenever the value at the selected path changes