improve
reduce code