added testing and some other shit