Fully combined Nikhil's and Mike's latest versions as of 4/15