final project for DSA2. Here goes nothing.