Getting close - I think all the functionality is in there...