mostly not working after dirty refactor