Refactored to include more universal methods