last try for a better structure