merge updates #1
merge updates #2
merge updates #3
merge updates #4
merge updates #5 functional