implement an end-to-end test (hope travis won't hate us for this)