still need to implement inheretence