final project for CS320 Programming Languages at Boston Univerisity