Finish, but still to optimize