add some customizability, comment source code.