updated for interface implementation