more functionality & tests