V3

breaking things into classes