Initial design patterns
Fix merge issues