add fraction implementation