Cage's edit is amost there, but have a little bugs.