Updated to implement "Tell, don't ask pattern"