Refactor to interfaces

Signed-off-by: Mike Gehard <mgehard@pivotallabs.com>