composition over inheritance ftw :+1: