introducing custom directives for code reuse