basic callback support
remove type parameters
working class macro