did a more complete implementation of +