pattern for reusabillity