#2 - added assertion for callback types