add naviebyes implemented by self
D
optimize