added ivar procs
added property procs
added protocol functions