added a lot of shit code