Add model factory

Signed-off-by: Ian Macalinao <ian@giza.us>