For CS412 Dmitris Project