Implemented proposeIfNecessary and all dependent functions