updates to previous implementation