Working, but needs some cleanup