actually use ruby for all this thanks to @parkr