this is really hard................................................................................................................................................................................................................................................................................