add timeout, and student function