start using immediate function pattern to implement namespace