internal refactor on MooseX