updated with stuff from the github suggested one