very big refactoring done