final project, it works!