dropped auto-init, can now supply init callbacks