finished basic implementation of required elements