Three Factors In Language Design