CSE 562, cse 586, cse 708, cse636