change implementation
change specs for refs
spec and impl