+ refactoring, re-structuring, jdc added