comma implemented
major refactoring