add comments
use Go naming conventions