finished 30% controller API