added phantom types and structural types