a little bit more type safety for arguments, might go further (chan*, user*, ..)