new model, added more functions