finalized for CIS195 demo