Update gem functionality from scratch