this is a very difficult assignment for some reason