refactored how {} and () work