1. An apparatus, comprising: a target module arranged to communicate with a client requesting access to a storage; a host module arranged to communicate with the storage; a cache arranged to selectively store data flowing through the apparatus; and a control module arranged to determine whether to store data flowing between the client and the storage in the cache and to pipe the data directly between the host module and the target module if the data is not to be cached.