What are the basic things that need to be considered for writing a CRM Plugin