merge from develop: Most of the changes