add different types, structured it a bit