def calculate_dates_and_durations(start=None, end=None, duration=None):
    """
    Calculates Start Date, End Date or Duration from the other two known's
    Rule is:
    If all Given Data is not none, then calculate end date from start and duration,
    if two are known, then calculate the third from them
    if less than two are known, then do nothing
    """
    if start is not None \
            and duration is not None:
        end = start + duration
    if start is not None \
            and end is not None:
        duration = end - start
    if end is not None \
            and duration is not None:
        start = end - duration
    return start, end, duration