First pass at a solution