restructured and additional tests