syncing work done in v1.5 to v2 branch