add more base fun and pushback