refactor to use method chain style.