Because shell languages suck