diff --git a/src/Plugin/AbstractPlugin.php b/src/Plugin/AbstractPlugin.php
index 06be995de21809348cc64a4f9401fd5e989b6743..e304ec7d41f87794c4fcf11251463e72adf7d308 100644
--- a/src/Plugin/AbstractPlugin.php
+++ b/src/Plugin/AbstractPlugin.php
@@ -42,14 +42,28 @@ abstract class AbstractPlugin implements \WPDesk_Translable {
 
 	public function init() {
 		$this->init_base_variables();
+		$this->register_plugin_hooks();
 		$this->hooks();
 	}
 
+	/**
+	 * Register plugin activation & deactivation hooks.
+	 */
+	public function register_plugin_hooks() {
+		register_activation_hook( $this->plugin_info->get_plugin_file_name(), array( $this, 'plugin_activation' ) );
+		register_deactivation_hook( $this->plugin_info->get_plugin_file_name(), array( $this, 'plugin_deactivation' ) );
+	}
+
+	/***
+	 * Init base variables.
+	 */
 	public function init_base_variables() {
 		$this->plugin_url = plugin_dir_url( $this->plugin_info->get_plugin_dir() );
 	}
 
 	/**
+	 * Fires hooks.
+	 *
 	 * @return void
 	 */
 	protected function hooks() {
@@ -66,6 +80,8 @@ abstract class AbstractPlugin implements \WPDesk_Translable {
 	}
 
 	/**
+	 * Get file path.
+	 *
 	 * @return string
 	 */
 	public function get_plugin_file_path() {
@@ -73,6 +89,8 @@ abstract class AbstractPlugin implements \WPDesk_Translable {
 	}
 
 	/**
+	 * Get plugin.
+	 *
 	 * @return $this
 	 */
 	public function get_plugin() {
@@ -80,6 +98,7 @@ abstract class AbstractPlugin implements \WPDesk_Translable {
 	}
 
 	/**
+	 * Load plugin text domain.
 	 * @return void
 	 */
 	public function load_plugin_text_domain() {
@@ -87,6 +106,8 @@ abstract class AbstractPlugin implements \WPDesk_Translable {
 	}
 
 	/**
+	 * Get text domain.
+	 *
 	 * @return string
 	 */
 	public function get_text_domain() {
@@ -94,17 +115,25 @@ abstract class AbstractPlugin implements \WPDesk_Translable {
 	}
 
 	/**
+	 * Get namespace.
+	 *
 	 * @return string
 	 */
 	public function get_namespace() {
 		return $this->plugin_namespace;
 	}
 
+	/**
+	 * Get plugin assets.
+	 *
+	 * @return string
+	 */
 	public function get_plugin_assets_url() {
 		return esc_url( trailingslashit( $this->get_plugin_url() . 'assets' ) );
 	}
 
 	/**
+	 * Get plugin URL.
 	 *
 	 * @return string
 	 */
@@ -112,18 +141,22 @@ abstract class AbstractPlugin implements \WPDesk_Translable {
 		return esc_url( trailingslashit( $this->plugin_url ) );
 	}
 
+	/**
+	 * Enqueue backend scripts
+	 */
 	public function admin_enqueue_scripts() {
 	}
 
+	/**
+	 * Enqueue frontend scripts
+	 */
 	public function wp_enqueue_scripts() {
 	}
 
 	/**
-	 * action_links function.
-	 *
-	 * @access public
+	 * Add custom plugin links.
 	 *
-	 * @param mixed $links
+	 * @param array $links Plugin links.
 	 *
 	 * @return array
 	 */
@@ -152,5 +185,19 @@ abstract class AbstractPlugin implements \WPDesk_Translable {
 		return $links;
 	}
 
+	/**
+	 * Plugin activation hook
+	 */
+	public function plugin_activation() {
+
+	}
+
+	/**
+	 * Plugin deactivation hook
+	 */
+	public function plugin_deactivation() {
+
+	}
+
 }