code is pretty nice now

all methods has their region