tried to make a nice structure