added rational functions