Update gem functionality from scratch

Wont fix