[#4] prevent access when limit reached; add tests; refactor tests