refactored as builder pattern;
added test against expiration;