bishop's flyweight implementation