feat(#47,#59,#62): add features