added better structure