Also check for the proper argument types. TODO: Annotations for this