wrote alot of model methods