\section{ATA Messages} Since this lab project was geared towards designing and implementing a message passing interface to disk, only very few message types have been defined to showcase the interface. \ac{sata} supports a wider range of devices which can benefit from more aspects of the \ac{ata} command set, such as {\tt TRIM} on solid state drives. Adding further commands to the flounder-based approach is as simple as adding a further message definition. \section{Integration with the System Knowledge Base} As we have mainly focused on getting message passing to disk to work, we have taken a few shortcuts concerning the integration of our subsystem into Barrelfish as a whole. For instance, we do not really use the \acs{skb} to uniquely identify the disks attached to an \ac{ahci} controller. Neither do we use the \acs{skb} to store additional data, e.g. serial number and size, of the attached disks. Adding that kind of data would simplify discovery of disks and acting appropriately, for example automatically mounting a volume or similar. \section{Handling multiple AHCI controllers at the same time} Currently our management daemon (see \longref{chap:ahcid}) successfully exits from the initialization code as soon as a \ac{ahci} controller has been found. It would be prefereable if on systems with multiple controllers attached all of these could be used. One consideration in this case would be whether to have one management daemon per controller or a global management daemon that controls all available \ac{ahci} controllers. \section{Support for advanced AHCI/SATA features} Some of the features of \ac{ahci}/\ac{sata} we did not look at are Port Multiplication and \ac{ncq}. However, our system design, including a management daemon that presents each port to the rest of the system as a separate entity, makes accomodating multiplied ports (multiplying ports is actually done in hardware and the \ac{ahci} host controller has a register for each port which contains the port multiplication status for that port) relatively easy as the only parts that have to be changed are the management daemon and libahci. Also, \ac{ncq} could be implemented almost entirely in libahci, if desired. We also do not handle hotplug of devices. Addition of devices could implemented relatively easy by extending ahcid's interrupt handler and performing the initialization steps once the link to the device has been established. Removal however is more challenging. Outstanding requests have to be completed with an error, the user notified and memory resources reclaimed. \section{Further Controllers} The modular nature of the Flounder-based approach allows to add additional backends for other controllers. Since this lab project only examined \ac{ahci}-compliant controllers, support is limited to realtively new controllers for \ac{sata}. In reality, there are still a lot of use cases where one might have to access \ac{pata}-based devices, such as older CDROM drives. Therefore, backends for more chipsets should be developed, most importantly one for a widespread \ac{pata} controller such as the \acs{piix} family or the \acs{ich} controllers before the introduction of \ac{ahci}.