Deciding which tools to use in order to implement the browser is a problem that affects many parts of the design. The decisions to make include which programming language to use, which programming libraries to use, and which other external software to depend on. Once these choices are made, we have severely limited the directions in which the browser may develop without a rewrite.