re-wrote backend parsing