improve design #2