took so many shortcuts, it's shamefull