setup specs.
improve implementations.