abstract_vs_interface added