Make userdata a void pointer
Add encoder component init