forgot to add some necessary functions