implementation for func. some work is needed for field.