implement sustainable abstract stuff