fix: touch if not exists