manually loop