added adaptors and mixin