better design - 2