This isn't fully done but should have everything