Several modifications.
- Private is implicit, no need to specify it
- Added command parser and listener interface