refactoring
add base layout
add more states