machine-independent tools