fix #11
added abstract functions