:refactor by jrt