Added everything. Small bug in part2, part3 needs work.