try to impl type system
incomp initial type system
impl initial type system