add some things i copied from the internet