generics wired in (not fully tested)