make use of struct composition