uses kb_define instead of define