added self to all the functions because python