added most of the methods needed