Works pretty well but there are still fixes I want to make