consolidated instance function