Incomplete solution so far