updated a few things which I'll explain later