migrated over Component from azaptree-scala-framework