formatting was kinda awful