refactored body constructor