maybe actually fixed functional arrows