add requested feature and more polish