encapsulate in module