possibly bad use of type parameters