advanced type manipulation