add some more functions & tests