final with this shitty assignment