clean code
add nat package
add high-level abstract design to remoting
update