Step 1

Created refactored interfaces to emphasize design and started writing tests