tiene un par de bugs pero la idea está