Since we want to support legacy inheritance mechanism, code is not finished and will have to be cleaned when all the items are ported.