First commit. Everything is a copy from hw2