[refactor] separate code in different models