add private scoping; add fluent interface