merging with upstream
Major updates cont.

Missed files from last commit + syncing with upstream.