The way it has been designed is quite interesting. Like keeping annotations on commands and then adding them to handler. Its a nice way to allow others add more stuff to it... However, i found something not correct. The server passing its instance to all the telnet clinet threads which call the servers processCommand method for execution of the command is not correct. Firstly It creates a cyclic loop on the code. Like Server dependent on client and client dependent on the server. Secondly, there is no synchronization on the processCommand method and hence i am sure, it will kind of mess up things, when multiple clients try out stuff at the same time. I would have kept the processCommand code in the client classes, rather than in the server, or else provided some sort of synchronization. But, keep in the client class makes it more fruitful, i suppose. And again, i am really not sure, what is the purpose of the javaLogger in the whole project. I think, i will take references from your code and implement a new one. Adding commands through annotations is a very nice idea, as far as the easiness to extend the code is concerned. But, using reflections makes it again a little less performant. Thanks.