this took a while idek if it looks good