this is hella difficult to read