make-interval implementation