basic abstract document implemented and tested