for safety consideration, derived class of Home<T> must be in the scope of "prototype"