model and part of implementation