done with tests. still incomplete.