all methods finished, still improve docummentation and tests