model implement