refactor class structure and add common static methods