I reverted to double underscore because I believe we don't wish inheriting classes to override this behaviour. If we think it should be overriddable then we can change it.