Wrapped it all up in a nice class