begin tile factory model