update(File, In, Out) ->
    InFile  = File ++ In,
    OutFile = File ++ Out,
    case is_file(OutFile) of
        true ->
            case writeable(OutFile) of
                true ->
                    outofdate(InFile, OutFile);
                false ->
                    %% can't write so we can't update
                    false
            end;
        false ->
            %% doesn't exist
            true
    end.