Refactored + redesign