why `else if` isn't else enough ? make this.mode a boolean ?