made use of forwardable and aliasing to reduce code