half solution, needs generics foradd and print