Shipping

I know this has a really long and awful method, but it does what it needs to do. It can be refactored later.