builder pattern practice.

reference : https://gist.github.com/pazdera/1121152