as will be appreciated by one skilled in the art , aspects of the present disclosure may be illustrated and described herein in any of a number of patentable classes or context including any new and useful process , machine , manufacture , or composition of matter , or any new and useful improvement thereof . accordingly , aspects of the present disclosure may be implemented entirely hardware , entirely software ( including firmware , resident software , micro - code , etc .) or combining software and hardware implementation that may all generally be referred to herein as a “ circuit ,” “ module ,” “ component ,” or “ system .” furthermore , aspects of the present disclosure may take the form of a computer program product embodied in one or more computer readable media having computer readable program code embodied thereon . any combination of one or more computer readable media may be utilized . the computer readable media may be a computer readable signal medium or a computer readable storage medium . a computer readable storage medium may be , for example , but not limited to , an electronic , magnetic , optical , electromagnetic , or semiconductor system , apparatus , or device , or any suitable combination of the foregoing . more specific examples ( a non - exhaustive list ) of the computer readable storage medium would include the following : a portable computer diskette , a hard disk , a random access memory ( ram ), a read - only memory ( rom ), an erasable programmable read - only memory ( eprom or flash memory ), an appropriate optical fiber with a repeater , a portable compact disc read - only memory ( cd - rom ), an optical storage device , a magnetic storage device , or any suitable combination of the foregoing . in the context of this document , a computer readable storage medium may be any tangible medium that can contain , or store a program for use by or in connection with an instruction execution system , apparatus , or device . a computer readable signal medium may include a propagated data signal with computer readable program code embodied therein , for example , in baseband or as part of a carrier wave . such a propagated signal may take any of a variety of forms , including , but not limited to , electro - magnetic , optical , or any suitable combination thereof . a computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate , propagate , or transport a program for use by or in connection with an instruction execution system , apparatus , or device . program code embodied on a computer readable signal medium may be transmitted using any appropriate medium , including but not limited to wireless , wireline , optical fiber cable , rf , etc ., or any suitable combination of the foregoing . computer program code for carrying out operations for aspects of the present disclosure may be written in any combination of one or more programming languages , including an object oriented programming language such as java , scala , smalltalk , eiffel , jade , emerald , c ++, c #, vb . net , python or the like , conventional procedural programming languages , such as the “ c ” programming language , visual basic , fortran 2003 , perl , cobol 2002 , php , abap , dynamic programming languages such as python , ruby and groovy , or other programming languages . the program code may execute entirely on the user &# 39 ; s computer , partly on the user &# 39 ; s computer , as a stand - alone software package , partly on the user &# 39 ; s computer and partly on a remote computer or entirely on the remote computer or server . in the latter scenario , the remote computer may be connected to the user &# 39 ; s computer through any type of network , including a local area network ( lan ) or a wide area network ( wan ), or the connection may be made to an external computer ( for example , through the internet using an internet service provider ) or in a cloud computing environment or offered as a service such as a software as a service ( saas ). aspects of the present disclosure are described herein with reference to flowchart illustrations and / or block diagrams of methods , apparatuses ( systems ) and computer program products according to embodiments of the disclosure . it will be understood that each block of the flowchart illustrations and / or block diagrams , and combinations of blocks in the flowchart illustrations and / or block diagrams , can be implemented by computer program instructions . these computer program instructions may be provided to a processor of a general purpose computer , special purpose computer , or other programmable data processing apparatus to produce a machine , such that the instructions , which execute via the processor of the computer or other programmable instruction execution apparatus , create a mechanism for implementing the functions / acts specified in the flowchart and / or block diagram block or blocks . these computer program instructions may also be stored in a computer readable medium that when executed can direct a computer , other programmable data processing apparatus , or other devices to function in a particular manner , such that the instructions when stored in the computer readable medium produce an article of manufacture including instructions which when executed , cause a computer to implement the function / act specified in the flowchart and / or block diagram block or blocks . the computer program instructions may also be loaded onto a computer , other programmable instruction execution apparatus , or other devices to cause a series of operational steps to be performed on the computer , other programmable apparatuses or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions / acts specified in the flowchart and / or block diagram block or blocks . fig1 depicts a system 100 used to design an at least partially secure cloud computing system . system 100 may include a public infrastructure 102 and a virtualization environment 110 . public infrastructure 102 may include a designer 104 , a control server 108 , and an application manager 106 . designer 104 may include a design studio 112 , a policy importer 114 , a policy builder 116 , a blueprints module 120 , a cloud computing component catalog 118 , a secured templates module 122 , and a non - secured templates module 124 . application manager 106 may include a grid deployer 126 , a deployment tracker 128 , and a compliance reports module 130 . control server 108 may include a policy distributor 134 and a compliance analyzer 132 . virtualization environment 110 may include a non - secured cloud computing component module 138 and a secured cloud computing component module 136 . secured cloud computing component module 136 may include an agent 140 . design studio 112 may be coupled to policy importer 114 , policy builder 116 , cloud computing component catalog 118 , and blueprints module 120 to help facilitate the design of cloud computing components . design studio 112 allows a user to model both secured and non - secured virtual applications . virtual applications are designs of cloud grids including a virtual machine , secured or non - secured , and / or other cloud computing components . as used herein , a cloud computing component can be a virtual machine or any other hardware or software related to implementing a cloud grid . a user may interact with design studio 112 through a user interface . the user interface may allow a user to interact through a display and a user input device including but not limited to a keyboard , touchpad , and mouse . the user interface may allow for the drag and drop of virtual computing instruments that represent cloud computing components . design studio 112 may allow a user to assign security attributes and policies to cloud computing components . design studio 112 may allow a user to assign policies to cloud computing components . a policy assigned to a specific cloud computing component may be retrieved from policy importer 114 . a policy assigned to a specific cloud computing component may be designed using policy builder 116 . design studio 112 may provide an environment to facilitate the selection of cloud computing component templates , selection of virtual datacenter resources , and assignment of security policies to the cloud computing component templates . the security policies may include security attributes to be assigned to a cloud computing component . as used herein a “ security attribute ” is a label that may be assigned to a cloud computing component . the security attribute may control which security policies are assigned to a cloud computing component . for example , a security attributes may include “ public ,” “ secret ,” “ isolated ,” or “ top secret ,” among others . a “ security policy ” ( or “ policy ”) associated with security attribute secret or top secret may be “ deny access to network unless username , password , and ip address are verified .” as used herein “ security level ” is a numeric representation corresponding to a specific security attribute . a security level may be any number within any range of numbers that allows for a sufficient number of security attributes , and combinations of security attributes , to be defined . a security level may define how secure a cloud computing component is . a security level may correspond to a single security attribute or a combination of security attributes . in an example a bigger security level number corresponds to a cloud computing component that is to be subject to more stringent security requirements . a cloud computing component may include more than one security attribute . policy builder 116 may be used to design a security policy for a cloud computing component that may be deployed in virtualization environment 110 . a security policy may become a part of a secured template when building a cloud grid using design studio 112 . adding a security policy to secure a template may be done manually where a user may define a security policy that a specific cloud computing component template should have . adding a security policy to a template may be done automatically where a user specifies a security level to be attained and a corresponding security policy is added to the template . a secured template is a cloud computing component template that has been assigned a security policy , a security attribute , and / or a security level . a non - secured template is a cloud computing component template that has not been assigned a security policy , security attribute , or security level . policy builder 116 may facilitate the design of a security policy for a cloud computing component to comply with . policy importer 114 is a module that may facilitate an import of a security policy from an external storage device , such as a database . the imported security policy may be added to a cloud computing component template . policy importer 114 and / or policy builder 116 may store a list of available policies that may be added to cloud computing components . the list stored by policy importer 114 and / or policy builder 116 may be a complete list of all the available security policies that may be added to cloud computing component templates . policy importer 114 may facilitate the import of a security policy for a cloud computing component to comply with . templates corresponding to cloud computing components may be stored in cloud computing component catalog 118 . secured cloud computing component templates may be stored in secured templates module 122 . non - secured cloud computing component templates may be stored in non - secured templates module 124 . cloud computing component catalog 118 may include cloud computing component catalog templates which design studio 112 may use to help facilitate the design of cloud computing components to be deployed . blueprints module 120 may store cloud computing component application blueprints created using , in part , design studio 112 . blueprints module 120 may be coupled to application manager 106 . blueprints module 120 may be coupled to grid deployer 126 to facilitate the transfer of data required to deploy an application . blueprints module 120 may be coupled to deployment tracker 128 so that the location of a deployed application can be tracked . blueprints stored in blueprints module 120 may be deployment descriptors that can be used by grid deployer 126 to aid in deploying a cloud computing component application . in an example embodiment a deployment descriptor is an extensible markup language ( xml ) file which contains information including how to deploy a cloud computing component , what security attributes , security policies , and security levels the cloud computing component should have , and how the cloud computing component should be configured and / or connections between them . as used herein a “ template ” is a definition of a specific cloud computing component . as used herein a “ blueprint ” is a combination of any number of definitions of cloud computing components , policies , security attributes , security levels , and connections between them . grid deployer 126 is a part of application manager 106 . grid deployer 126 may be coupled to virtualization environment 110 to facilitate the deployment of cloud computing components . grid deployer 126 may be coupled to deployment tracker 128 to allow for storage of data corresponding to deployed cloud computing components . grid deployer 126 may use blueprints from blueprints module 120 to deploy a cloud computing component in virtualization environment 110 . grid deployer 126 may deploy a cloud computing component when the virtual environment properties of the cloud computing component are sufficiently defined . grid deployer 126 may be coupled to blueprints module 120 so that data relevant to deploying an application may be communicated to grid deployer 126 . grid deployer 126 may deploy designed cloud computing components as a function of the data contained in relevant cloud computing component blueprints . designed cloud computing components may be included in a cloud computing component application which includes a corresponding cloud computing component application blueprint . grid deployer 126 may request additional information including host name , network settings , or administrator password , etc ., before deploying a cloud computing component . information requested by grid deployer 126 may be dependent on the attributes of the environment in which the cloud computing component is to be deployed . these attributes are called “ virtual environment properties ” herein . deployment tracker 128 may store previously completed cloud computing component application deployments . deployment tracker 128 may be coupled to control server 108 . deployment tracker 128 may be coupled to policy distributor 134 to facilitate retention of what the current security attributes , security policies , and security level has been assigned to a cloud computing component , if any . deployment tracker 128 may be coupled to compliance reports module 130 to help facilitate the transfer of data relevant to creating compliance reports . if a security policy has been modified , or the meaning of a security level has been updated , and there are cloud computing components with a corresponding security policy stored in deployment tracker 128 , then deployment tracker 128 may send a notice to policy distributor 134 . policy distributor 134 may then update the cloud computing component with a new security policy . compliance reports module 130 may create and store compliance reports . compliance reports may provide compliance status of a deployed cloud computing component . compliance reports stored in compliance reports module 130 may provide the security status of a deployed cloud computing component . compliance reports may be created as a function of the assigned security policy and compliance data . compliance reports may provide an indication as to whether a deployed cloud computing component is up to date with the corresponding security policy defined for the cloud computing component . compliance reports module 130 may be coupled to control server 108 . compliance reports module 130 may be coupled to compliance analyzer 132 to facilitate the creation of compliance reports . compliance reports module 130 may be coupled to policy distributor 134 to facilitate communication of data relevant to creating compliance reports . in an example , compliance status may include different levels of compliance including “ compliant ,” “ deviations exist ,” and “ no compliance .” compliance status may be determined by comparing how a deployed cloud computing component should have been configured ( e . g . by using a blueprint ) and comparing that to the actual configuration of the deployed cloud computing component . compliance analyzer 132 may be a part of control server 108 . compliance analyzer 132 may be coupled to virtualization environment 110 . compliance analyzer 132 may be coupled to secured cloud computing component module 136 to facilitate the transfer of data relevant to creating compliance reports . compliance analyzer 132 may be coupled to agent 140 for at least the same reason . compliance analyzer 132 may collect compliance information from secured cloud computing component module 136 . information collected by compliance analyzer 132 may be sent from agent 140 . information collected by compliance analyzer 132 may be information relevant to compliance reports created by compliance reports module 130 . compliance information may correspond to a security related event that occurred in virtualization environment 110 . the security related event may be a user attempting to access a cloud computing component that the user does not have authorization to access . the security related event may be any activity that attempts to violate the security policy corresponding to a cloud computing component . policy distributor 134 may be a part of control server 108 . policy distributor 134 may be coupled to virtualization environment 110 to facilitate the communication of data relevant to implementing and / or updating a security policy on a cloud computing component . policy distributor 134 may be coupled to secured cloud computing component module 136 to facilitate communication of a security policy that a cloud computing component must comply with . policy distributor 134 may be coupled to agent 140 for at least the same reason . policy distributor 134 may be responsible for deploying security policies to the relevant secured cloud computing components . the security policy distributed by policy distributor 134 may be created using policy builder 116 or retrieved using policy importer 114 . the security policy distributed by policy distributor 134 may be received from deployment tracker 128 . deployment tracker 128 may determine that a security policy on a deployed cloud computing component may be updated and alert policy distributor 134 as to which cloud computing component may be updated and how the cloud computing component should be updated . policy distributor 134 may update a security policy on a deployed cloud computing component when an authorized user makes a request to update a security policy on the deployed cloud computing component . an authorized user may be anyone who has been given clearance to update or modify a security level of a deployed cloud computing component . an authorized user may also be anyone who is allowed to modify a blueprint ( e . g . a security officer ) or anyone who has been given access to change attributes on a specific deployment environment ( e . g . an operator ), among others . definitions of who is allowed to be an authorized user may be managed on a given system through the use of user management tasks . policy distributor 134 may collect compliance information from secured cloud computing component module 136 . the information collected from secured cloud computing component module 136 may correspond to the current compliance status of the particular cloud computing component . the information collected from secured cloud computing component module 136 may correspond to deviations from a security policy that may exist , or existed at some time , on a deployed cloud computing component . deployed cloud computing components include all machines or components deployed in virtualization environment 110 . cloud computing components contained in virtualization environment 110 may include non - secured cloud computing components , secured cloud computing components , and other cloud computing components including network routers , storage devices , firewalls , and load balancers . virtualization environment 110 may include a secured cloud computing component module 136 and non - secured cloud computing component module 138 . secured cloud computing component module 136 may include a deployed cloud computing component that has been assigned a security policy . the security policy may be assigned using design studio 112 . non - secured cloud computing component module 138 may include deployed cloud computing components that have not been assigned a security policy . secured cloud computing component module 136 may contain agent 140 . agent 140 may deploy , maintain , and / or enforce a security policy locally . agent 140 may be coupled to control server 108 to facilitate communication of data relevant to compliance with a security policy . each deployed secured cloud computing component may include an agent . any number of agents may be used to deploy , maintain , and / or enforce a security policy locally on a secured cloud computing component . agent 140 may send compliance information to control server 108 . the compliance information may be relevant to cloud computing component compliance with a security policy . the compliance information may be relevant to compliance reports created by compliance reports module 130 . fig2 is a flow diagram of a method of creating a secured cloud grid according to an example embodiment . the method 200 begins at 202 with a user selecting cloud computing components ( e . g . secured and non - secured cloud computing components ). the selection may be facilitated by cloud computing component catalog 118 . at 204 , the user creates connections between the cloud computing components chosen . the connected cloud computing components may become part of a cloud computing component application . as used herein a “ cloud computing application ” is a set of virtual machines and other cloud computing components which provide some kind of service . for example , a “ web application ” is composed of virtual machines ( e . g . an oracle machine , a web server machine ) and other cloud computing components ( e . g . router , firewall and storage ). in an example a user design of a web application includes dragging and dropping virtual machines and other cloud computing components and specifying the connections between them . at 206 , the user may choose to import security policies from a database of pre - selected security policies . this may be accomplished using policy importer 114 . the imported security policies may be received from customers of the user . alternatively , the user may choose to build their own security policies for a given cloud computing component using policy builder 116 . at 208 the user may assign a security level and a policy to cloud computing components that need to be secured . at 210 the user connects secured cloud computing components to a control server . at 212 a cloud computing component application blueprint is created . the cloud computing component application blueprint may be created automatically by design studio 112 or manually through use of design studio 112 . the cloud computing component application blueprint may be stored in blueprints module 120 . fig3 is a flow diagram of deploying a cloud computing component according to an example embodiment . method 300 begins with a user choosing a cloud computing component application , at 302 . the cloud computing component application may be chosen from blueprints module 120 . at 304 deployment properties are specified . the deployment properties may be specified automatically by design studio 112 or manually by a user using design studio 112 . at 306 the cloud computing component application is deployed in virtualization environment 110 . fig4 is a flow diagram of updating a security policy or other part of a cloud computing component blueprint according to an example embodiment . method 400 begins at 402 with a cloud computing component application blueprint being modified with a new cloud computing component version , a modified security policy , or both . at 404 a new cloud computing component application blueprint is generated . the new cloud computing component application blueprint reflects the new cloud computing component version or security policy that is to be implemented . at 406 , the location of the cloud computing component application to be updated is identified . the location may be identified by deployment tracker 128 . item 408 is optional . at 408 , the cloud computing component application to be updated with new cloud computing component application parameters is updated . the updating may be accomplished using grid deployer 126 . the new cloud computing component parameters reflect the new cloud computing component version or modified security policy to be implemented in the cloud computing component application . item 410 is optional . at 410 , security policies on cloud computing components are updated . the updating may be accomplished using policy distributor 134 . updating may include updating the security level corresponding to the cloud computing component . fig5 is a flow diagram of creating compliance reports . method 500 begins at 502 with collecting audit information and reporting the audit information from secured cloud computing components . the collecting may be accomplished using compliance analyzer 132 . the audit information may be relevant to security policy compliance . the audit information may regard attempts to violate a security policy . at 504 , compliance reports are generated . a compliance report may be based on actual and / or planned use of a relevant cloud computing component . compliance reports may be generated using compliance reports module 130 . an example method of designing , updating , and generating a compliance report for a virtual cloud environment includes selecting at least two cloud computing component templates from cloud computing component catalog 118 . a user may choose to select secured and / or non - secured cloud computing components . after the cloud computing components have been selected , connections between the at least two selected cloud computing component templates may be defined . security levels and policies may be assigned to the selected cloud computing component templates . the security levels and policies may be imported using policy importer 114 or built using policy builder 116 . a cloud computing component blueprint may be defined for selected cloud computing components . the cloud computing component blueprint may include information regarding security levels and policies assigned to the corresponding cloud computing component . the cloud computing component blueprint may also include information regarding the defined connections corresponding to the cloud computing component . relevant cloud computing components with a corresponding cloud computing component blueprint may then be communicated to control server 108 . security levels and policies assigned to the selected cloud computing components may be updated . updating may include generating a modified cloud computing component blueprint , the cloud computing component blueprint altered in accord with a blueprint update corresponding to a modified security policy , or new cloud computing component version , to create the modified cloud computing component blueprint . updating may include identifying where the cloud computing component to be updated is deployed . identifying where a cloud computing component has been deployed may be accomplished using deployment tracker 128 . a cloud computing component may be updated according to the altered cloud computing component blueprint . updating the cloud computing component may be accomplished using policy distributor 134 or grid deployer 126 . audit and reporting information regarding secured cloud computing component compliance with security policies may be collected , and compliance reports generated as a function of actual and / or planned use of the secured cloud computing components and the security levels and policies assigned to the cloud computing component templates . in an example embodiment a compliance report may include a list of applications and the corresponding compliance status of the applications in the list . in an example embodiment a user can use filters to help review compliance reports . for example a user can use a filter to view only those applications which have an outstanding security deviation . in another example a user can use a filter to view only those applications which have a specific security attribute . in an example embodiment a compliance report may show what security is missing on a specific cloud computing component that is creating a security deviation . it should be appreciated by one of ordinary skill in the art that many other types of filters may be used to help review security policy compliance of cloud computing components . fig6 is a block diagram of a computer system to implement methods according to an example embodiment . in the embodiment shown in fig6 , a hardware and operating environment is provided that is applicable to any of the servers and / or remote clients shown in the other figures . as shown in fig6 , one embodiment of the hardware and operating environment includes a general purpose computing device in the form of a computer 600 ( e . g ., a personal computer , workstation , or server ), including one or more processing units 621 , a system memory 622 , and a system bus 623 that operatively couples various system components including the system memory 622 to the processing unit 621 . there may be only one or there may be more than one processing unit 621 , such that the processor of computer 600 comprises a single central - processing unit ( cpu ), or a plurality of processing units , commonly referred to as a multiprocessor or parallel - processor environment . in various embodiments , computer 600 is a conventional computer , a distributed computer , or any other type of computer . the system bus 623 can be any of several types of bus structures including a memory bus or memory controller , a peripheral bus , and a local bus using any of a variety of bus architectures . the system memory can also be referred to as simply the memory , and , in some embodiments , includes read - only memory ( rom ) 624 and random - access memory ( ram ) 625 . a basic input / output system ( bios ) program 626 , containing the basic routines that help to transfer information between elements within the computer 600 , such as during start - up , may be stored in rom 624 . the computer 600 further includes a hard disk drive 627 for reading from and writing to a hard disk , not shown , a magnetic disk drive 628 for reading from or writing to a removable magnetic disk 629 , and an optical disk drive 630 for reading from or writing to a removable optical disk 631 such as a cd rom or other optical media . the hard disk drive 627 , magnetic disk drive 628 , and optical disk drive 630 couple with a hard disk drive interface 632 , a magnetic disk drive interface 633 , and an optical disk drive interface 634 , respectively . the drives and their associated computer - readable media provide non volatile storage of computer - readable instructions , data structures , program modules and other data for the computer 600 . it should be appreciated by those skilled in the art that any type of computer - readable media which can store data that is accessible by a computer , such as magnetic cassettes , flash memory cards , digital video disks , bernoulli cartridges , random access memories ( rams ), read only memories ( roms ), redundant arrays of independent disks ( e . g ., raid storage devices ) and the like , can be used in the exemplary operating environment . a plurality of program modules can be stored on the hard disk , magnetic disk 629 , optical disk 631 , rom 624 , or ram 625 , including an operating system 635 , one or more application programs 636 , other program modules 637 , and program data 638 . programming for implementing one or more processes or method described herein may be resident on any one or number of these computer - readable media . a user may enter commands and information into computer 600 through input devices such as a keyboard 640 and pointing device 642 . other input devices ( not shown ) can include a microphone , joystick , game pad , satellite dish , scanner , or the like . these other input devices are often connected to the processing unit 621 through a serial port interface 646 that is coupled to the system bus 623 , but can be connected by other interfaces , such as a parallel port , game port , or a universal serial bus ( usb ). a monitor 647 or other type of display device can also be connected to the system bus 623 via an interface , such as a video adapter 648 . the monitor 647 can display a graphical user interface for the user . in addition to the monitor 647 , computers typically include other peripheral output devices ( not shown ), such as speakers and printers . the computer 600 may operate in a networked environment using logical connections to one or more remote computers or servers , such as remote computer 649 . these logical connections are achieved by a communication device coupled to or a part of the computer 600 ; the invention is not limited to a particular type of communications device . the remote computer 649 can be another computer , a server , a router , a network pc , a client , a peer device or other common network node , and typically includes many or all of the elements described above i / o relative to the computer 600 , although only a memory storage device 650 has been illustrated . the logical connections depicted in fig6 include a local area network ( lan ) 651 and / or a wide area network ( wan ) 652 . such networking environments are commonplace in office networks , enterprise - wide computer networks , intranets and the internet , which are all types of networks . when used in a lan - networking environment , the computer 600 is connected to the lan 651 through a network interface or adapter 653 , which is one type of communications device . in some embodiments , when used in a wan - networking environment , the computer 600 typically includes a modem 654 ( another type of communications device ) or any other type of communications device , e . g ., a wireless transceiver , for establishing communications over the wide - area network 652 , such as the internet . the modem 654 , which may be internal or external , is connected to the system bus 623 via the serial port interface 646 . in a networked environment , program modules depicted relative to the computer 600 can be stored in the remote memory storage device 650 of remote computer , or server 649 . it is appreciated that the network connections shown are exemplary and other means of , and communications devices for , establishing a communications link between the computers may be used including hybrid fiber - coax connections , t1 - t3 lines , dsl &# 39 ; s , oc - 3 and / or oc - 12 , tcp / ip , microwave , wireless application policy , and any other electronic media through any suitable switches , routers , outlets and power lines , as the same are known and understood by one of ordinary skill in the art . the flowchart and block diagrams in the figures illustrate the architecture , functionality , and operation of possible implementations of systems , methods and computer program products according to various aspects of the present disclosure . in this regard , each block in the flowchart or block diagrams may represent a module , segment , or portion of code , which comprises one or more executable instructions for implementing the specified logical function ( s ). it should also be noted that , in some alternative implementations , the functions noted in the block may occur out of the order noted in the figures . for example , two blocks shown in succession may , in fact , be executed substantially concurrently , or the blocks may sometimes be executed in the reverse order , depending upon the functionality involved . it will also be noted that each block of the block diagrams and / or flowchart illustration , and combinations of blocks in the block diagrams and / or flowchart illustration , can be implemented by special purpose hardware - based systems that perform the specified functions or acts , or combinations of special purpose hardware and computer instructions . the terminology used herein is for the purpose of describing particular aspects only and is not intended to be limiting of the disclosure . as used herein , the singular forms “ a ”, “ an ” and “ the ” are intended to include the plural forms as well , unless the context clearly indicates otherwise . it will be further understood that the terms “ comprises ” and / or “ comprising ,” when used in this specification , specify the presence of stated features , integers , steps , operations , elements , and / or components , but do not preclude the presence or addition of one or more other features , integers , steps , operations , elements , components , and / or groups thereof . the corresponding structures , materials , acts , and equivalents of any means or step plus function elements in the claims below are intended to include any disclosed structure , material , or act for performing the function in combination with other claimed elements as specifically claimed . the description of the present disclosure has been presented for purposes of illustration and description , but is not intended to be exhaustive or limited to the disclosure in the form disclosed . many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the disclosure . the aspects of the disclosure herein were chosen and described in order to best explain the principles of the disclosure and the practical application , and to enable others of ordinary skill in the art to understand the disclosure with various modifications as are suited to the particular use contemplated .