functionality & tests added