introduce state_machine gem
specify bucket states and transitions
all transitions should occur through an event
Merge branch 'feature/statemachine' into develop