#7 - Implement basic client shell