removed useless private constructor
changed to a chain-of-responsibility-pattern
implemented a chain-of-responsibility-pattern