refactor of universal