write necessary methods and docs