big refactoring, adds lemons