Initial commit, reusing as much as possible from lab 3