BIG refactor into classes with specs

@kevinreedy @shanesveller 
Why is this file included? It appears unused and would be very specific to AWS