Port WhenThen to Parser