fuck this is complicatedf